Отображать только найденный вывод grep нескольких файлов

Я использую grep, чтобы найти строку в файле. Grep, вероятно, найдет только один файл, который совпадает с именем файла, возможно, два, но мне нужно только поставить строку, если он ее нашел, и только строку.

grep -oh 'Closing finished' /opt/cpu/hold/closing15{14..23} 

В настоящее время я получаю вывод, как:

grep: /opt/cpu/hold/closing1514: No such file or directory
Closing finished
Closing finished
grep: /opt/cpu/hold/closing1517: No such file or directory
grep: /opt/cpu/hold/closing1518: No such file or directory

Я использую это в функции в скрипте bash, в цикле до совпадения «Закрытие завершено», прежде чем двигаться дальше. Так что я хочу, чтобы вывод был просто "Закрытие завершено", если он найден, чтобы он соответствовал моему условию пока.

Всего 1 ответ


Если вы хотите подавить ошибки, связанные с несуществующими файлами, просто используйте опцию -s :

-s, --no-messages
       Suppress error messages about nonexistent or unreadable files.

Т.е. ваша примерная команда должна выглядеть так:

grep -soh 'Closing finished' /opt/cpu/hold/closing15{14..23} 

В качестве альтернативы вы также можете полностью подавить вывод ошибки, перенаправив ее в / dev / null следующим образом:

grep -oh 'Closing finished' /opt/cpu/hold/closing15{14..23} 2>/dev/null

Есть идеи?

10000