Che ne dici di questo, che sono riuscito a ottenere grazie, in parte, a questo post.
Volete trovare diversi file, diciamo registri con nomi diversi ma con un modello (ad esempio filename=logfile.DATE), all'interno di diverse directory con un modello (ad esempio /logsapp1, /logsapp2). Ogni file ha un modello che vuoi grep (ad esempio "init time") e vuoi avere il "init time"file di ogni file, ma sapendo a quale file appartiene.
find ./logsapp* -name logfile* | xargs -I{} grep "init time" {} \dev\null | tee outputfilename.txt
Quindi outputfilename.txtsarebbe qualcosa di simile
./logsapp1/logfile.22102015: init time: 10ms
./logsapp1/logfile.21102015: init time: 15ms
./logsapp2/logfile.21102015: init time: 17ms
./logsapp2/logfile.22102015: init time: 11ms
In generale
find ./path_pattern/to_files* -name filename_pattern* | xargs -I{} grep "grep_pattern" {} \dev\null | tee outfilename.txt
Spiegazione:
find il comando cercherà i nomi dei file in base al modello
quindi, pipe xargs -I{}reindirizzerà l' findoutput su{}
quale sarà l'input per grep ""pattern" {}
Quindi il trucco per far grepvisualizzare i nomi dei file\dev\null
e infine, scrivere l'output nel file con tee outputfile.txt
Questo ha funzionato per me nella grepversione 9.0.5 build 1989.
grep --version