Sto utilizzando con successo find per creare un elenco di tutti i file nella sottodirectory corrente, esclusi quelli nella sottodirectory "cache". Ecco il mio primo pezzo di codice:Piping trova risultati in grep per l'esclusione rapida delle directory
find . -wholename './cach*' -prune -o -print
Desidero ora pipe questo in un comando grep. Sembra che dovrebbe essere semplice:
find . -wholename './cach*' -prune -o -print | xargs grep -r -R -i "samson"
... ma questo sta tornando risultati che sono in gran parte dalla directory della cache. Ho provato a rimuovere il riferimento xargs, ma questo è ciò che ti aspetteresti, eseguendo il grep sul testo dei nomi dei file, piuttosto che sui file stessi. Il mio obiettivo è trovare "samson" in qualsiasi file che non sia contenuto nella cache.
Probabilmente girerò questo problema usando solo greps raddoppiati in questa istanza, ma sono molto curioso di sapere perché questo one-liner si comporta in questo modo. Mi piacerebbe sentire i pensieri su come modificarlo usando ancora questi due comandi (poiché ci sono dei vantaggi in termini di velocità nel farlo in questo modo).
(Questo è in CentOS 5, btw.)
Grazie! La rimozione della ricorsione è ciò che ha fatto il trucco per me. (Le vecchie abitudini sono dure a morire, per inciso, è stato un errore di battitura da parte mia, poiché di solito uso "-r -i -I", che ha molto più senso delle ridondanti bandiere di ricorsione.) La parte "wholename" andava bene, poiché la sottodirectory indesiderata è effettivamente nel livello root della directory corrente. Quindi è ora: 'trovare. -wholename './cach*' -prune -o -print | xargs grep -i -I "samson" ' – eternalnewb
Impressionante, felice è stato qualcosa di semplice =] – newfurniturey