Bagaimana dengan ini, yang berhasil saya capai, sebagian, untuk posting ini.
Anda ingin menemukan beberapa file, misalkan log dengan nama yang berbeda tetapi sebuah pola (misalnya filename=logfile.DATE
), di dalam beberapa direktori dengan pola (misalnya /logsapp1, /logsapp2
). Setiap file memiliki pola yang Anda ingin grep (misalnya "init time"
), dan Anda ingin memiliki "init time"
masing-masing file, tetapi mengetahui file mana miliknya.
find ./logsapp* -name logfile* | xargs -I{} grep "init time" {} \dev\null | tee outputfilename.txt
Maka outputfilename.txt
akan menjadi sesuatu seperti
./logsapp1/logfile.22102015: init time: 10ms
./logsapp1/logfile.21102015: init time: 15ms
./logsapp2/logfile.21102015: init time: 17ms
./logsapp2/logfile.22102015: init time: 11ms
Secara umum
find ./path_pattern/to_files* -name filename_pattern* | xargs -I{} grep "grep_pattern" {} \dev\null | tee outfilename.txt
Penjelasan:
find
perintah akan mencari nama file berdasarkan pada pola
kemudian, pipa xargs -I{}
akan mengarahkan find
output ke{}
yang akan menjadi input untuk grep ""pattern" {}
Kemudian trik untuk membuat grep
tampilan nama file\dev\null
dan akhirnya, tulis output dalam file dengan tee outputfile.txt
Ini bekerja untuk saya di grep
versi 9.0.5 build 1989.
grep --version