【问题标题】:How to search for files in a directory that matches multiple string strings如何在目录中搜索与多个字符串匹配的文件
【发布时间】:2015-07-18 21:15:18
【问题描述】:

m 正在寻找命令或脚本来搜索包含多行字符串的文件并显示文件名

示例 在 /var/tmp/ 中有多个文件 每个文件将包含以下内容

文件1:
约翰
2015年10月

戴尔

文件2:
戴夫
2014年9月
三星

文件3:
约翰
2014年10月
戴尔

等等

如何找到同时包含 John 和 2015 的文件?

【问题讨论】:

    标签: search grep find


    【解决方案1】:

    在 grep 正则表达式中,您可以将 | 用于 OR。举个例子:

    grep -rnw . -e "head" 
    

    它从当前目录中递归选择包含单词head的所有文件。

    grep -rnw . -e "head\|footer" 
    

    相同的命令,但它选择带有单词headfooter 的文件。

    注意:转义需要反斜杠。您也可以在正则表达式中使用不带反斜杠的egrep

    【讨论】:

      【解决方案2】:

      这就是你想要的,如果你有更多的“和”约束(包含 xy z...):

      grep -l "John" *.txt | xargs grep -l "2015"
      

      -l:这是一个小写的 L,意思是列出包含匹配项的文件的名称,而不是默认的逐行匹配输出。

      *.txt:显然,将此参数替换为您正在查找匹配项的文件名列表所需的任何内容。

      xargs:使用指定的参数以及从前面的 grep 的输出管道输入的文件名调用 grep。

      【讨论】:

        【解决方案3】:

        谢谢,两者都有效,但是当涉及到一个包含成千上万个文件的文件夹时,我开始收到参数太长的错误

        grep -l "150728" * | xargs grep -l "克里斯"

        -bash: /bin/grep: 参数列表太长

        【讨论】:

          猜你喜欢
          • 2021-08-30
          • 1970-01-01
          • 2013-09-22
          • 2014-03-18
          • 2015-01-18
          • 2011-02-04
          • 2016-09-25
          • 2012-05-22
          • 1970-01-01
          相关资源
          最近更新 更多