2016-03-17 2 views
0

Я изо всех сил пытаюсь понять, как это можно сделать, и поиск не вызывает многого. У меня такое чувство Мне нужно будет создать сценарий.Bash: как искать определенную фразу во всех файлах с именем output.log во всех подкаталогах

Предположим, у меня есть каталог с именем «Выходы журнала». Внутри «Выходов журнала» у меня есть папка для 2016, 2015, 2014 и т. Д. Внутри каждого из них у меня есть январь, февраль, март .. И потом, наконец, внутри каждой из этих папок будет filed named output.log ,

Как запустить команду в каталоге «Выходные данные» для сканирования всех подкаталогов для поиска файла с именем «output.log», а затем выполнить поиск определенной фразы в этом файле журнала. Мне не нужно это искать через любые другие файлы вне output.log, и каталоги могут быть организованы X подкаталогами глубоко.

Не может понять это, несмотря на игру вокруг довольно долгое время ..

ответ

3
find 'Log outputs' -name 'output.log' -exec grep 'searchkey' {} \; 

Если вам нужно, чтобы увидеть название числа файлов & линии, добавьте -Hn в команду Grep.

+0

Прекрасно сделано; Я предлагаю заменить '\;' на '+' для эффективности (вы, как правило, получаете только вызов _single_ 'grep'. Логика затем отменяется:' -h' тогда требуется для подавления префикса файла). – mklement0

+1

@ mklement0: Ницца. Сегодня я многому научился только из ваших комментариев. – ryry1985

+0

Это фантастика, спасибо. Кажется, он очень эффективен и быстро завершается. Одна вещь, о которой я не уверен: Какова цель \; vs + как указано mklement0? –

Смежные вопросы