如何搜索并列出不包含特定短语的文件

如何搜索并列出不包含特定短语的文件

我正在对大约 1000 个输入文件运行相同的作业。其中大约 10% 会失败,但检查这一点的唯一方法是滚动浏览输出文件并检查它是否声明completed without error.为了节省时间,有一种方法可以使用grep命令

  • oxxxxx仅通过输出文件(名为)专门在目录中搜索,
  • 对于那些不包含该短语的人completed without error
  • oxxxx在终端窗口中列出这些文件。

谢谢你!

答案1

使用GNU grep 的-L扩大:

grep -L 'completed without error' o*

-L, --文件不匹配

抑制正常输出;相反,打印每个通常不会打印输出的输入文件的名称。扫描将在第一个匹配处停止。

没有 GNU grep:

for f in o*; do grep -q "completed without error" "$f" || printf "%s\n" "$f"; done

答案2

grep -R <pattern> -L *

-R      recursively search
-L      files without match    

例子:

 touch $(seq 1 100)  # create 100 files
 echo "testing" > 28
 echo "testing" > 32
 echo "testing" > 10
 echo "testing" > 15
 echo "testing" > 95
 echo "testing" > 72
 echo "testing" > 34
 echo "testing" > 25 # eight files with pattern
 $ grep -l test *|wc -l  # files that contains pattern
   8
 $ grep -L test *|wc -l  # files that doesn't contain pattern
  92

相关内容