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

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

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

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

5 ответов


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

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

grep -v

или

grep --invert-match

вы также можете сделать то же самое с помощью find:

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

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


добавить на grep команда для инвертирования результатов.


 grep "subscription" | grep -v "spec"  

как указано несколько раз, инверсия достигается с помощью до grep. Позвольте мне добавить (надеюсь, забавную) заметку, что вы могли бы понять это сами, пропустив grep помогите текст:

grep --help | grep invert

- v, --invert-match выберите несоответствующие строки