it-swarm.com.de

grep rekursiv für einen bestimmten Dateityp unter Linux

Können wir einen Begriff (z. B. "onblur") rekursiv in einigen Ordnern nur in bestimmten Dateien (HTML-Dateien) suchen?

grep -Rin "onblur" *.html

Das gibt nichts zurück. Aber,

grep -Rin "onblur" .

gibt "onblur" Suchergebnis aus allen verfügbaren Dateien zurück, wie in text (". txt"), .mako, .jinja usw.

12

Überprüfen Sie diese Antwort und das eine .

Auch dies könnte Ihnen helfen: grep bestimmte Dateitypen rekursiv | commandlinefu.com .

Der Befehl lautet:

grep -r --include="*.[ch]" pattern .

Und in Ihrem Fall ist es:

grep -r --include="*.html" "onblur" .
31
dnl-blkv
grep -r --include "*.html"  onblur .

Bekam es von: Wie grep ich rekursiv?

Sie könnten auch eine "der silberne Sucher" - 

ag --html onblur

es sucht standardmäßig nach regexp und ist im aktuellen Verzeichnis rekursiv. Es hat vordefinierte Erweiterungen für die Suche. In diesem Fall wird --html auf .htm, .html, .shtml und .xhtml abgeglichen. Ignoriert auch Binärdateien, druckt Dateinamen und Zeilennummern und färbt die Ausgabe standardmäßig ein. 

Einige Optionen - 

-Q --literal
          Do not parse PATTERN as a regular expression. Try to match it literally.
-S --smart-case
          Match case-sensitively if there are any uppercase letters in PATTERN, 
          case-insensitively otherwise. Enabled by default.
-t --all-text
          Search all text files. This doesn't include hidden files.
   --hidden
          Search hidden files. This option obeys ignored files.

Für die Liste der unterstützten Dateitypen führen Sie ag --list-file-types aus.

Das einzige, was ihm fehlt, ist die Möglichkeit, einen Dateityp mit einer Erweiterung anzugeben. In diesem Fall müssen Sie mit --include auf grep zurückgreifen. 

1
Brian Burns