Я пытался выработать синтаксис этой команды:
grep ! error_log | find /home/foo/public_html/ -mmin -60
ИЛИ:
grep '[^error_log]' | find /home/baumerf/public_html/ -mmin -60
Мне нужно увидеть все файлы, которые были изменены, кроме названных error_log
.
Я читал об этом здесь , но нашел только один not
шаблон -regex.
Ответы:
grep -v
твой друг:Также проверьте связанные
-L
(дополнение-l
).источник
-e
может быть использована опция:grep -v -e 'negphrase1' -e 'negphrase2'
grep -v 'negphrase1|negphrase2|negphrase3'
-E
works, т.е.grep -vE 'negphrase1|negphrase2|negphrase3'
grep "" /dev/null * | grep foo | grep -v bar | cut -d: -f1 | sort -u
( почему первый Grep? , Всегда есть способ :))Вы также можете использовать
awk
для этих целей, так как это позволяет вам выполнять более сложные проверки более ясным способом:Линии, не содержащие
foo
:Строки, не содержащие
foo
ниbar
:Строки , не содержащие ни
foo
ни ,bar
которые содержат либоfoo2
илиbar2
:И так далее.
источник
В вашем случае вы, вероятно, не хотите использовать grep, но вместо этого добавляете отрицательное предложение в команду find, например
Если вы хотите включить в имя символы подстановки, вам нужно их экранировать, например, чтобы исключить файлы с суффиксом .log:
источник