【问题标题】:grep without showing path/file:linegrep 不显示路径/文件:行
【发布时间】:2013-10-16 14:55:39
【问题描述】:

你如何 grep 并且只返回匹配的行?即结果中省略了路径/文件名。

在这种情况下,我想查看当前目录中的所有 .bar 文件,搜索术语 FOO

find . -name '*.bar' -exec grep -Hn FOO {} \;

【问题讨论】:

    标签: linux unix grep find


    【解决方案1】:

    无需find。如果您只是在特定目录中寻找模式,这就足够了:

    grep -hn FOO /your/path/*.bar
    

    其中-h是隐藏文件名的参数,来自man grep

    -h, --no-filename

    抑制输出文件名的前缀。这是默认设置 当只有一个文件(或只有标准输入)要搜索时。

    请注意,您正在使用

    -H, --with-filename

    打印每个匹配的文件名。这是默认的,当有 搜索多个文件。

    【讨论】:

    • 行号可以省略吗?
    • @javadba 你可能使用了别名,输入alias grep。要省略别名,请输入 \grep ...
    • 是的,它使用了别名。
    • @javadba 省略 -n 标志
    【解决方案2】:

    只需将-H 替换为-h。查看man grep 了解更多选项详情

    find . -name '*.bar' -exec grep -hn FOO {} \;
    

    【讨论】:

      【解决方案3】:

      来自手册页:

      -h, --no-filename
          Suppress the prefixing of file names on output. This is the default when there
          is only one file (or only standard input) to search.
      

      【讨论】:

        猜你喜欢
        • 2021-12-22
        • 2015-01-30
        • 2017-04-20
        • 2015-08-20
        • 2012-12-02
        • 2010-11-27
        • 1970-01-01
        • 1970-01-01
        • 2017-12-14
        相关资源
        最近更新 更多