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.txtbö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 grepdosya adlarını görüntülemek için hile\dev\null
ve son olarak çıktıyı tee outputfile.txt
Bu benim için grep9.0.5 derlemesi 1989'da çalıştı .
grep --version