【问题标题】:Grep list files oncegrep 列表文件一次
【发布时间】:2015-02-27 15:47:08
【问题描述】:

我正在我的项目中寻找一些模式,但它在某些文件中被重复了太多。如何告诉 grep 每个文件只显示一次?

我正在使用:

grep -R "my_pattern" *

【问题讨论】:

  • 如果您只想要文件的名称,那么@EtanReisner 的建议就是要走的路。你能澄清一下是不是这样吗?
  • 好吧.. Etan 评论对我来说是完全有效的,但如果你能看到我在答案中看到的一段代码,那就更好了:) 我选择了 Nicolas,因为它保留了语法颜色!

标签: unix command-line grep


【解决方案1】:

你可以这样做,它会让 grep 只打印第一个匹配项:

grep -m 1 -R "pattern" *

【讨论】:

    【解决方案2】:

    您可以使用“uniq”命令:http://unixhelp.ed.ac.uk/CGI/man-cgi?uniq

    grep -R "my_pattern" * | sort -u
    

    这将排序并为您提供唯一值。

    【讨论】:

      【解决方案3】:

      您可以使用“计数”功能:

      grep $TERM -crl $DIR

      -c 返回每​​个文件中的命中计数,-l 删除任何计数为 0 的内容

      【讨论】:

        【解决方案4】:

        如果您想要只需要包含"my_pattern" 的文件的名称

        grep -lR "my_pattern" *
        

        但是上面的命令会忽略所有以点开头的子文件夹。

        如果你想要来自子文件夹.git 的文件名包含 "https://github.com":

        grep -lR "https://github.com" .git/*
        

        【讨论】:

          猜你喜欢
          • 2023-03-31
          • 1970-01-01
          • 2014-08-23
          • 2013-05-04
          • 1970-01-01
          • 2018-09-21
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多