Я пытаюсь grep шаблон в неизвестном файле в каталоге с большим количеством файлов. Я обычно выполнить следующий код:bash использовать вывод find с grep
$ grep 0RY7HYLA in ./*8017*/*diag*
Однако, потому что я искал файлы в очень большой папке файлов я не могу использовать Grep напрямую, потому что операция потребляет слишком много трафика. Мне нужно использовать команду find в сочетании с grep. Я изо всех сил, чтобы трубы вывода команды находят в качестве входных данных для команды Grep т.е.
find ./*8017*/*diag* -maxdepth 3 -type f -name output_log -exec egrep -l '0RY7HYLA' {} \; | grep 0RY7HYLA
Приведенный выше код не работает, т.е. не выводится из выполнения этого кода. Если я только исполняю код перед каналом, он выводит файл и каталог, но с grep нет выхода.
Во-вторых, я должен поставить это в условном операторе, что-то вроде:
if find ./*8017*/*diag* -maxdepth 3 -type f -name output_log -exec egrep -l '0RY7HYLA' {} \; ; then grep 0RY7HYLA ???????? ; fi
Является ли это выполнимо?
Каков ваш желаемый результат? Вы пытаетесь напечатать строки, соответствующие обеим строкам? –
«Вышеприведенный код не работает». -> Зачем ты так говоришь? Вернул ли неожиданный результат или не вернул ожидаемый результат или, может быть, он отобразил ошибку? – Aaron
Я только что добавил более подробное объяснение этому утверждению. – stevo