Per una semplice ricerca di file, puoi usare -l
di grep e -r
opzioni:
grep -rl "mystring"
Tutta la ricerca viene eseguita da grep. Ovviamente, se hai bisogno di selezionare i file su qualche altro parametro, find è la soluzione corretta:
find . -iname "*.php" -execdir grep -l "mystring" {} +
Il execdir
L'opzione crea ogni comando grep per ogni directory e concatena i nomi dei file in un solo comando (+
).
L'opzione standard grep -l
(che è una L minuscola) potrebbe farlo.
Dallo standard Unix:
-l
(The letter ell.) Write only the names of files containing selected
lines to standard output. Pathnames are written once per file searched.
If the standard input is searched, a pathname of (standard input) will
be written, in the POSIX locale. In other locales, standard input may be
replaced by something more appropriate in those locales.
Inoltre non hai bisogno di -H
in questo caso.
Dal grep(1)
pagina man:
-l, --files-with-matches Suppress normal output; instead print the name of each input file from which output would normally have been printed. The scanning will stop on the first match. (-l is specified by POSIX.)