¿Qué tal esto, que logré lograr gracias, en parte, a esta publicación?
Desea encontrar varios archivos, digamos registros con diferentes nombres pero con un patrón (por ejemplo filename=logfile.DATE), dentro de varios directorios con un patrón (por ejemplo /logsapp1, /logsapp2). Cada archivo tiene un patrón que desea grep (por ejemplo "init time"), y desea tener el "init time"de cada archivo, pero sabiendo a qué archivo pertenece.
find ./logsapp* -name logfile* | xargs -I{} grep "init time" {} \dev\null | tee outputfilename.txt
Entonces el outputfilename.txtsería algo como
./logsapp1/logfile.22102015: init time: 10ms
./logsapp1/logfile.21102015: init time: 15ms
./logsapp2/logfile.21102015: init time: 17ms
./logsapp2/logfile.22102015: init time: 11ms
En general
find ./path_pattern/to_files* -name filename_pattern* | xargs -I{} grep "grep_pattern" {} \dev\null | tee outfilename.txt
Explicación:
find el comando buscará los nombres de archivo basados en el patrón
entonces, la tubería xargs -I{}redirigirá la findsalida a la{}
cual será la entrada para grep ""pattern" {}
Luego el truco para hacer grepmostrar los nombres de archivo\dev\null
y finalmente, escriba la salida en el archivo con tee outputfile.txt
Esto funcionó para mí en la grepversión 9.0.5, compilación 1989.
grep --version