Vous pouvez utiliser ack. C'est comme grep pour le code source. Vous pouvez analyser tout votre système de fichiers avec.
Faites simplement :
ack 'text-to-find-here'
Dans votre répertoire racine.
Vous pouvez également utiliser des expressions régulières, spécifier le type de fichier, etc.
MISE À JOUR
Je viens de découvrir The Silver Searcher, qui est comme ack mais 3 à 5 fois plus rapide que lui et ignore même les modèles d'un .gitignore
fichier.
Procédez comme suit :
grep -rnw '/path/to/somewhere/' -e 'pattern'
-r
ou-R
est récursif,-n
est le numéro de ligne, et-w
correspond à correspondre au mot entier.-l
(L minuscule) peut être ajouté pour donner simplement le nom de fichier des fichiers correspondants.-e
est le modèle utilisé lors de la recherche
Parallèlement à cela, --exclude
, --include
, --exclude-dir
flags pourraient être utilisés pour une recherche efficace :
- Cela ne recherchera que dans les fichiers qui ont des extensions .c ou .h :
grep --include=\*.{c,h} -rnw '/path/to/somewhere/' -e "pattern"
- Cela exclura la recherche de tous les fichiers se terminant par l'extension .o :
grep --exclude=\*.o -rnw '/path/to/somewhere/' -e "pattern"
- Pour les répertoires, il est possible d'exclure un ou plusieurs répertoires en utilisant le
--exclude-dir
paramètre. Par exemple, cela exclura les répertoires dir1/, dir2/ et tous ceux correspondant à *.dst/ :
grep --exclude-dir={dir1,dir2,*.dst} -rnw '/path/to/somewhere/' -e "pattern"
Cela fonctionne très bien pour moi, pour atteindre presque le même objectif que le vôtre.
Pour plus d'options, voir man grep
.
Utilisez grep -ilR
:
grep -Ril "text-to-find-here" /
i
signifie ignorer la casse (facultatif dans votre cas).R
signifie récursif.l
signifie "afficher le nom du fichier, pas le résultat lui-même"./
signifie commencer à la racine de votre machine.