Чтобы найти файлы, содержащие performance
, но не warn
, перечислите файлы, содержащие performance
, а затем отфильтруйте те, которые содержат warn
.Вам нужны отдельные вызовы на grep
для каждого фильтра.Используйте параметр -l
для grep, чтобы он печатал только имена файлов, а не совпадающие строки.Используйте xargs
для передачи имен файлов из первого прохода в командную строку второго прохода grep
.
find /apps -type f -exec grep -l "performance" /dev/null {} + |
sed 's/[[:blank:]\"'\'']/\\&/g' |
xargs grep -lv "warn"
(вызов sed
в середине происходит потому, что xargs
ожидает странно заключенный в кавычки формат ввода, который не соответствует тому, что производит любая другая команда.)