web-dev-qa-db-fra.com

grep récursivement pour un type de fichier spécifique sous Linux

Peut-on rechercher un terme (par exemple "onblur") de manière récursive dans certains dossiers uniquement dans des fichiers spécifiques (fichiers html)?

grep -Rin "onblur" *.html

Cela ne retourne rien. Mais,

grep -Rin "onblur" .

renvoie le résultat de la recherche "onblur" à partir de tous les fichiers disponibles, comme dans le texte (".txt"), le .mako, le .jinja, etc.

12

Envisagez de vérifier cette réponse et celle-là .

Cela pourrait aussi vous aider: grep certains types de fichiers de manière récursive | commandlinefu.com .

La commande est:

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

Et dans votre cas c'est:

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

Je viens de: Comment puis-je grep récursivement?

4

Vous pourriez aussi aimer ag 'le chercheur d'argent' - 

ag --html onblur

il recherche par défaut une expression rationnelle et est récursif par défaut dans le répertoire en cours. Il possède des ensembles d'extensions prédéfinis. Dans ce cas, --html est mappé sur .htm, .html, .shtml, .xhtml. Ignore également les fichiers binaires, imprime les noms de fichier, les numéros de ligne et colorise la sortie par défaut. 

Quelques options - 

-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.

Pour la liste des types de fichiers pris en charge, exécutez ag --list-file-types.

La seule chose qui semble manquer est de pouvoir spécifier un type de fichier avec une extension, auquel cas vous devez vous rabattre sur grep avec --include. 

1
Brian Burns