这可能是重复的,因为我相信我已经看到了类似的东西但是找不到它所以我在问:
我有很多包含多行的文件,在大多数情况下,其中一行包含某个patern。我希望每个文件都没有这个模式的行。
编辑:只需要使用“-L”grep选项。这是重复的,我确定但是找不到原来的背...
答案 0 :(得分:26)
使用“-L”选项以使文件没有模式。根据手册页:
-L, - 没有匹配的文件
抑制正常输出;而是打印每个输入文件的名称,通常不会打印输出。扫描将在第一场比赛中停止。
答案 1 :(得分:6)
Grep返回0/1表示是否匹配,所以你可以这样做:
for f in *.txt; do
if ! grep -q "some expression" $f; then
echo $f
fi
done
编辑:您还可以使用-L选项:
grep -L“some expression”*
答案 2 :(得分:0)
尝试“计数”并过滤等于“:0”:
grep -c [pattern] * | grep ':0$'
(如果您使用TurboGREP 咳嗽,则不会有-L开关;)
(编辑:如果名称中包含“:0”的文件,则在正则表达式结尾添加'$')