Come cercare ricorsivamente del testo all’interno di una directory su un solo tipo di file
sabato 7 febbraio 2009
Grep è sicuramente uno dei miei comandi preferiti di linux, quando ti danno da modificare un paio di chili di codice scritto da altri che non hai mai visto c’è un solo modo per uscirne, grep.
Uno dei comandi che uso piu frequentemente è:
grep -ri "update articoli" *
che va a ricercare ricorsivamente dalla directory in cui sono, tutti i file in cui trova la stringa tra virgolette in modalità case insensitive. Questo comando, come detto prima, è molto comodo, ma cosa succede se nella directory in cui dobbiamo fare il grep abbiamo anche un qulche giga di immagini o documenti? Succede che il grep ammazza il server e ci da la risposta tra un paio di ore.
Come fare allora? In questo caso possiamo limitare la ricerca ai soli file il cui nome contiene la parola php, presumendo che quindi siano file php. Questo ci velocizza la ricerca in quanto il grep non verrà effettuato su tutta quella mole di immagini e documenti. Per fare questo si può usare il segente comando:
find . |grep php | xargs -i grep -iH "update articoli" {}
Provare per credere, alla prossima.