如何使用grep匹配所有不匹配特定模式的行?我试了一下:
grep '[^foo]'
如何使用grep匹配所有不匹配特定模式的行?我试了一下:
grep '[^foo]'
当前回答
在您的示例中,您可能不想使用grep,而是在find命令中添加一个否定子句,例如。
find /home/baumerf/public_html/ -mmin -60 -not -name error_log
如果你想在名字中包含通配符,你必须转义它们,例如排除后缀为.log的文件:
find /home/baumerf/public_html/ -mmin -60 -not -name \*.log
其他回答
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