Bu yazıya kısmen teşekkür etmeyi başardığım buna ne dersin.
Birkaç dosya bulmak istiyorsunuz, farklı isimlerle bir desen (örneğin filename=logfile.DATE
) içeren günlükler diyelim , bir desene sahip birkaç dizin içinde (örn. /logsapp1, /logsapp2
). Her dosya, grep (örneğin "init time"
) oluşturmak istediğiniz bir desene sahiptir ve her dosyanın sahip olmasını istersiniz "init time"
, ancak hangi dosyaya ait olduğunu bilirsiniz .
find ./logsapp* -name logfile* | xargs -I{} grep "init time" {} \dev\null | tee outputfilename.txt
Sonra outputfilename.txt
böyle bir şey olurdu
./logsapp1/logfile.22102015: init time: 10ms
./logsapp1/logfile.21102015: init time: 15ms
./logsapp2/logfile.21102015: init time: 17ms
./logsapp2/logfile.22102015: init time: 11ms
Genel olarak
find ./path_pattern/to_files* -name filename_pattern* | xargs -I{} grep "grep_pattern" {} \dev\null | tee outfilename.txt
Açıklama:
find
komutu, desene göre dosya adlarını arayacaktır
Daha sonra, boru xargs -I{}
yönlendirir find
çıktı{}
hangi girdi olacak grep ""pattern" {}
Sonra grep
dosya adlarını görüntülemek için hile\dev\null
ve son olarak çıktıyı tee outputfile.txt
Bu benim için grep
9.0.5 derlemesi 1989'da çalıştı .
grep --version