Как инвертировать выражение grep

Следующее выражение grep успешно отображает все файлы .exe и .html в текущем каталоге и подкаталогах.

ls -R |grep -E .*[\.exe]$\|.*[\.html]$  

Как инвертировать этот результат, чтобы перечислить те, которые не являются .html или .exe. (То есть, !=.)

Ответ 1

Используйте опцию командной строки -v или --invert-match,

ls -R |grep -v -E .*[\.exe]$\|.*[\.html]$

Ответ 2

grep -v

или

grep --invert-match

Вы также можете сделать то же самое, используя find:

find . -type f \( -iname "*" ! -iname ".exe" ! -iname ".html"\)

Подробнее здесь.

Ответ 3

Добавьте параметр -v в свою команду grep, чтобы инвертировать результаты.

Ответ 4

 grep "subscription" | grep -v "spec"