我正在对大约 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