С GNUgrep
(-r
уже является расширением GNU )и GNU xargs
или совместимым:
grep -rlZ 2019. |
xargs -r0 grep -LiZ FAILED |
xargs -r0 grep -l DSL
Вам нужно xargs
, чтобы иметь возможность передавать список файлов вывода по одному grep
в качестве аргументов следующему grep
. И -Z
для того, чтобы этот список файлов был ограничен NUL -. Чтобы сообщить список файлов, которые не содержат FAILED, это также-L
(расширение GNU ), а не -vl
, которое сообщает о файлах, содержащих хотя бы одну строку, которая не соответствует.
Это должно свести количество grep
вызовов к минимуму, а для большого количества файлов можно одновременно использовать до трех процессоров.