web-dev-qa-db-fra.com

grep dans tous les répertoires

J'ai un répertoire nommé XYZ qui contient des répertoires ABC, DEF, GHI. Je veux rechercher un modèle 'writeText' dans tous * .c dans tous les répertoires (c'est-à-dire XYZ, XYZ/ABC, XYZ/DEF et XYZ/GHI) Quelle commande grep puis-je utiliser?

De plus, si je souhaite rechercher uniquement dans XYZ, XYZ/ABC, XYZ/GHI et non XYZ/DEF, quelle commande grep puis-je utiliser?

Je vous remercie!

19
Romonov
grep -R --include="*.c" --exclude-dir={DEF} writeFile /path/to/XYZ
  • -R signifie récursif, il ira donc dans les sous-répertoires du répertoire que vous parcourez
  • --include="*.c" signifie "rechercher les fichiers se terminant par .c "
  • --exclude-dir={DEF} signifie "exclure les répertoires nommés DEF. Si vous souhaitez exclure plusieurs répertoires, procédez comme suit: --exclude-dir={DEF,GBA,XYZ}
  • writeFile est le motif que vous attendez
  • /path/to/XYZ est le chemin d'accès au répertoire que vous souhaitez utiliser.

Notez que ces drapeaux s'appliquent à GNU grep, peut être différent si vous utilisez BSD/SysV/AIX grep. Si vous utilisez Linux/GNU grep utils, ça devrait aller.

35
wkl

Vous pouvez utiliser la commande suivante pour répondre au moins à la première partie de votre question.

find . -name *.c | xargs grep "writeText"
3
Hakan Serce