我有很多包含多行的文件,在大多数情况下,其中一行包含某种模式。我想列出每个没有这种模式行的文件。
问问题
16257 次
3 回答
39
使用“-L”选项以使文件没有模式。根据手册页:
-L, --files-without-match
抑制正常输出;而是打印通常不会打印输出的每个输入文件的名称。扫描将在第一次匹配时停止。
于 2009-05-19T07:09:53.890 回答
6
Grep 返回 0/1 以指示是否存在匹配项,因此您可以执行以下操作:
for f in *.txt; do
if ! grep -q "some expression" $f; then
echo $f
fi
done
编辑:您还可以使用 -L 选项:
grep -L "一些表达式" *
于 2009-05-19T07:01:17.710 回答
0
尝试“count”并过滤等于“:0”的地方:
grep -c [pattern] * | grep ':0$'
(如果您使用 TurboGREP咳嗽,您将没有 -L 开关;))
(编辑:添加 '$' 到正则表达式的末尾,以防文件名中有“:0”)
于 2009-05-19T07:11:21.017 回答