Как насчет этого, чего мне удалось добиться, частично благодаря этому посту.
Вы хотите найти несколько файлов, скажем, журналы с разными именами, но с шаблоном (например filename=logfile.DATE
), внутри нескольких каталогов с шаблоном (например /logsapp1, /logsapp2
). У каждого файла есть шаблон, который вы хотите получить (например "init time"
), и вы хотите иметь "init time"
каждый файл, но зная, к какому файлу он принадлежит.
find ./logsapp* -name logfile* | xargs -I{} grep "init time" {} \dev\null | tee outputfilename.txt
Тогда outputfilename.txt
будет что-то вроде
./logsapp1/logfile.22102015: init time: 10ms
./logsapp1/logfile.21102015: init time: 15ms
./logsapp2/logfile.21102015: init time: 17ms
./logsapp2/logfile.22102015: init time: 11ms
В основном
find ./path_pattern/to_files* -name filename_pattern* | xargs -I{} grep "grep_pattern" {} \dev\null | tee outfilename.txt
Объяснение:
find
Команда будет искать имена файлов на основе шаблона
затем труба xargs -I{}
перенаправит find
вывод на{}
который будет входом для grep ""pattern" {}
Тогда трюк, чтобы сделать grep
отображение имен файлов\dev\null
и, наконец, записать вывод в файл с tee outputfile.txt
Это работало для меня в grep
версии 9.0.5, сборка 1989 года.
grep --version