Trovare tutti i file che contengono una stringa di testo

Da shell eseguire il comando:

$ grep -rnw 'directory' -e "pattern"

-r o -R esegue una ricerca in tutte le sottocartelle (ricerca recursive), -n mostra il numero di linea and -w ricerca la parola intera. Se si aggiunge -l (lettera L) verrà mostrato solo il nome del file.

Oltre a questi è possibile utilizzare i parametri --exclude--include per effettuare una ricerca più mirata:

$ grep --include=\*.{c,h} -rnw 'directory' -e "pattern"

Il comando ricerca la stringa pattern solo nei file che hanno estensione .c o .h. Allo stesso modo il parametro --exclude:

$ grep --exclude=*.o -rnw 'directory' -e "pattern"

esclude dalla ricerca i file che terminano con l’estensione .o.

Anziché file è possibile include o escludere intere directory attraverso i parametri --exclude-dir--include-dir, come nell’esempio:

$ grep --exclude-dir={dir1,dir2,*.dst} -rnw 'directory' -e "pattern"

Per ulteriori opzioni è possibile consultare il manuale di grep:

$ man grep