2 votes

Veuillez traduire ceci en gardant les mêmes balises HTML s'il y en a : grep plusieurs types de fichiers récursivement

Je tente de comprendre comment rechercher la chaîne "_iterator_tag" dans tous les sous-répertoires de manière récursive et dans les fichiers avec les extensions .cpp, .h, .hpp, .cxx, .inl. Pour l'instant, tout ce que je peux faire est de rechercher chacun de ces types de fichiers séparément comme ci-dessous grep -R "_iterator_tag" --include '*.cpp' Y a-t-il un moyen plus rapide de rechercher tous ces types de fichiers ensemble? Merci

4voto

Bill Points 1408

Utilisez ack. C'est parfait pour rechercher du code source (et ne pas regarder dans les images, ou les artefacts RCS, comme les répertoires .svn)

2voto

songsong Points 173

Vous pouvez spécifier plusieurs instances de --include sur la ligne de commande (elles sont combinées par "ou").

Modifier : Spécifiquement

 grep -r --include '*.cpp' --include '*.h' --include '*.hpp' --include '*.cxx' --include '*.inl' "_iterator_tag" /some/path

0voto

user9517 Points 113163

Essayez

trouver /some/path -name \( '*.cpp' -o -name '*.h' -o -name '*.hpp' -o -name '*.cxx' -o -name '*.ini' \) | xargs grep "_iterator_tag"

0voto

grizzancs Points 101

Je définis les alias suivants dans mon fichier .bashrc

ffg() { eval find $1 | xargs -n 1 grep -nH $2 2>/dev/null ; }
fc() { ffg "-name \*.c -o -name \*.cpp" "$*"; }
fh() { ffg "-name \*.h -o -name \*.hpp" $* ; }
fch() { ffg "-name \*.c -o -name \*.cpp -o -name \*.h -o -name \*.hpp" $* ; }

Donc, je ferais généralement :

cd     
fch _iterator_tag

Évidemment, vous auriez besoin d'un ensemble de types de fichiers différents.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X