代码之家  ›  专栏  ›  技术社区  ›  claf

Grep:获取所有没有与[closed]匹配的行的文件

  •  14
  • claf  · 技术社区  · 17 年前

    我有很多文件有多行,在大多数情况下,其中一行包含特定的模式。我想列出每一个没有这种模式的文件。

    3 回复  |  直到 6 年前
        1
  •  39
  •   Isaac Freeman    7 年前

    使用“-L”选项以使文件不带模式。根据手册页:

    抑制正常输出;而是打印通常不会打印输出的每个输入文件的名称。扫描将在第一次匹配时停止。

        2
  •  6
  •   JesperE    17 年前

    Grep返回0/1以指示是否存在匹配项,因此您可以执行以下操作:

    for f in *.txt; do
        if ! grep -q "some expression" $f; then
            echo $f
        fi
    done
    

    编辑 :您也可以使用-L选项:

    grep-L“一些表达式”*

        3
  •  0
  •   Isaac Freeman    7 年前

    尝试“计数”并过滤等于:0的位置:

    grep -c [pattern] * | grep ':0$'
    

    (如果您使用TurboGREP 咳嗽 ,您将不会有-L开关;))

    (编辑:如果名称中有“:0”的文件,则将“$”添加到正则表达式的末尾)