2013-06-04 4 views

risposta

15

Si vorrà utilizzare find per questo, dal momento che grep non funzionerà in modo ricorsivo (per quanto ne so). Qualcosa del genere dovrebbe funzionare:

find . -name "strings.xml" -exec grep "text" "{}" \; 

Le ricerche find comando a partire dalla directory corrente (.) per un file con il nome strings.xml (-name "strings.xml"), e poi per ogni file trovato, eseguire il comando specificato grep . Le parentesi graffe ("{}") sono un segnaposto utilizzato da find per specificare il nome del file trovato. Maggiori dettagli possono essere trovati in man find.

Si noti inoltre che l'opzione -r per grep non è più necessaria, poiché find funziona in modo ricorsivo.

+0

Grazie, che cosa le parentesi graffe fanno? – thisiscrazy4

+0

@ thisiscrazy4 Aggiornato con queste informazioni. –

+1

Ho usato questo comando per trovare una stringa in particolare tipo di file. trovare. -name "* .java" -exec grep -rn "string" "{}" \; Mostra le occorrenze ma il nome del file è assente. Come stampare anche il nome del file. aiuto di Pls. –

0

Prova sotto il comando

trovare. -tipo f | xargs grep "strings.xml" *

Trova Ricerca comando "stringa string.xml dalla directory corrente.

1

grep supporta un'opzione --include il cui uso è quello di ricorsione nelle directory solo alla ricerca di file pattern matching. Così, provare qualcosa di simile di seguito:

grep -R --include 'strings.xml' text . 

ho anche provato ad utilizzare trovare quale sembra essere molto più veloce di grep:

find ./ -name "strings.xml" -exec grep "text" '{}' \; -print 

Questi collegamenti parlano della stesso problema, potrebbe aiutare a:

'grep -R string *.txt' even when top dir doesn't have a .txt file

http://www.linuxquestions.org/questions/linux-newbie-8/run-grep-only-on-certain-files-using-wildcard-919822/

2

È possibile utilizzare il comando grep:

grep -r "text" /path/to/dir/strings.xml