Ответ 1
grep -v
- ваш друг:
grep --help | grep invert
-v, -invert-match выбирает несогласованные строки
Также проверьте связанный -L
(дополнение к -L
).
-L, --files-without-match только печатать имена FILE, не содержащие соответствия
Я пытаюсь выработать синтаксис для этой команды:
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
- ваш друг:
grep --help | grep invert
-v, -invert-match выбирает несогласованные строки
Также проверьте связанный -L
(дополнение к -L
).
-L, --files-without-match только печатать имена FILE, не содержащие соответствия
Вы также можете использовать awk
для этих целей, поскольку он позволяет выполнять более сложные проверки более четко:
Строки, не содержащие foo
:
awk '!/foo/'
Строки, содержащие ни foo
ни bar
:
awk '!/foo/ && !/bar/'
Линии, содержащие ни foo
ни bar
которые содержат либо foo2
либо bar2
:
awk '!/foo/ && !/bar/ && (/foo2/ || /bar2/)'
И так далее.
В вашем случае вы, вероятно, не хотите использовать grep, но вместо этого добавляете отрицательное предложение к команде find, например.
find /home/baumerf/public_html/ -mmin -60 -not -name error_log
Если вы хотите включить подстановочные знаки в имя, вам нужно будет их избежать, например. для исключения файлов с суффиксом .log:
find /home/baumerf/public_html/ -mmin -60 -not -name \*.log