Grep:获取没有匹配行的所有文件

时间:2009-05-19 06:58:51

标签: file grep

这可能是重复的,因为我相信我已经看到了类似的东西但是找不到它所以我在问:

我有很多包含多行的文件,在大多数情况下,其中一行包含某个patern。我希望每个文件都没有这个模式的行。

编辑:只需要使用“-L”grep选项。这是重复的,我确定但是找不到原来的背...

3 个答案:

答案 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”的文件,则在正则表达式结尾添加'$')