Comment puis-je faire un grep récursif ?

Comment puis-je récursivement grep tous les répertoires et sous-répertoires ?

find . | xargs grep "texthere" *
Solution
grep -r "texthere" .

Le premier paramètre représente l'expression régulière à rechercher, tandis que le second représente le répertoire dans lequel la recherche doit être effectuée. Dans ce cas, . signifie le répertoire courant.

Note : Ceci fonctionne pour GNU grep, et sur certaines plateformes comme Solaris, vous devez spécifiquement utiliser GNU grep par opposition à l'implémentation ancienne. Pour Solaris, il s'agit de la commande ggrep.

Commentaires (11)

Si vous connaissez l'extension ou le motif du fichier que vous souhaitez, une autre méthode consiste à utiliser l'option --include :

grep -r --include "*.txt" texthere .

Vous pouvez également mentionner les fichiers à exclure avec --exclude.

Ag

Si vous effectuez fréquemment des recherches dans le code, Ag (The Silver Searcher) est une alternative beaucoup plus rapide à grep, qui est adaptée à la recherche dans le code. Par exemple, il est récursif par défaut et ignore automatiquement les fichiers et répertoires listés dans .gitignore, ainsi vous n'avez pas besoin de passer les mêmes options d'exclusion encombrantes à grep ou find.

Commentaires (7)

Aussi :

find ./ -type f -print0 | xargs -0 grep "foo"

mais grep -r est une meilleure réponse.

Commentaires (10)