Puoi usare ack. È come grep per il codice sorgente. Puoi scansionare l'intero file system con esso.
Basta fare:
ack 'text-to-find-here'
Nella tua directory principale.
Puoi anche usare espressioni regolari, specificare il tipo di file, ecc.
AGGIORNA
Ho appena scoperto The Silver Searcher, che è come un ack ma 3-5 volte più veloce di esso e ignora persino i pattern da un .gitignore
file.
Procedi come segue:
grep -rnw '/path/to/somewhere/' -e 'pattern'
-r
o-R
è ricorsivo,-n
è il numero di riga e-w
sta per corrispondere alla parola intera.-l
(L minuscola) può essere aggiunto per dare solo il nome del file corrispondente.-e
è il modello utilizzato durante la ricerca
Insieme a questi, --exclude
, --include
, --exclude-dir
i flag potrebbero essere usati per una ricerca efficiente:
- Questo cercherà solo nei file che hanno estensioni .c o .h:
grep --include=\*.{c,h} -rnw '/path/to/somewhere/' -e "pattern"
- Questo escluderà la ricerca di tutti i file che terminano con l'estensione .o:
grep --exclude=\*.o -rnw '/path/to/somewhere/' -e "pattern"
- Per le directory è possibile escludere una o più directory utilizzando il
--exclude-dir
parametro. Ad esempio, questo escluderà le directory dir1/, dir2/ e tutte quelle che corrispondono a *.dst/:
grep --exclude-dir={dir1,dir2,*.dst} -rnw '/path/to/somewhere/' -e "pattern"
Questo funziona molto bene per me, per raggiungere quasi lo stesso scopo del tuo.
Per ulteriori opzioni, vedi man grep
.
Usa grep -ilR
:
grep -Ril "text-to-find-here" /
i
sta per ignore case (facoltativo nel tuo caso).R
sta per ricorsivo.l
sta per "mostra il nome del file, non il risultato stesso"./
sta per iniziare dalla radice della tua macchina.