如何使用grep匹配所有不匹配特定模式的行?我试了一下:

grep '[^foo]'

Grep -v是你的朋友:

grep --help | grep invert  

-v,——invert-match选择不匹配的行

还可以查看相关的-L (-L的补码)。

-L,——files-without-match只打印不匹配的文件名


你也可以使用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