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!
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.
Vous pouvez utiliser la commande suivante pour répondre au moins à la première partie de votre question.
find . -name *.c | xargs grep "writeText"