Sto cercando di trovare un modo per scansionare il mio intero sistema Linux alla ricerca di tutti i file contenenti una specifica stringa di testo. Giusto per chiarire, sto cercando del testo all'interno del file, non nel nome del file.
Quando stavo cercando come fare, mi sono imbattuto in questa soluzione due volte:
find / -type f -exec grep -H 'text-to-find-here' {} \;
Tuttavia, non funziona. Sembra visualizzare ogni singolo file nel sistema.
È vicino al modo corretto di farlo? In caso contrario, come dovrei? Questa capacità di trovare stringhe di testo nei file sarebbe straordinariamente utile per alcuni progetti di programmazione che sto realizzando.
-H
con -l
(e forse grep
con fgrep
). Per escludere i file con determinati schemi di nomi, dovrai utilizzare find
in modo più avanzato. Vale comunque la pena imparare a usare find
. Basta man find
.
find … -exec <cmd> +
è più facile da scrivere e più veloce di find … -exec <cmd> \;
. Funziona solo se <cmd>
accetta un numero qualsiasi di argomenti relativi al nome file. Il risparmio nei tempi di esecuzione è particolarmente grande se <cmd>
si avvia lentamente come gli script Python o Ruby.
grep "pattern" path/*.txt
.
come un carattere jolly a carattere singolo, tra gli altri. Il mio consiglio è di usare sempre fgrep o egrep.