【问题标题】:'grep -l' is not working for a folder with sub folders'grep -l' 不适用于带有子文件夹的文件夹
【发布时间】:2011-11-15 23:13:12
【问题描述】:

我正在尝试搜索文件内容。该文件位于包含子文件夹的目录中。

命令

grep -l 'keyword'

正在工作并且正在查找文件夹下的所有文件。如果我在包含子文件夹的文件夹中搜索,我不会得到任何结果。

有没有办法使用目录级搜索来搜索文件内容?

【问题讨论】:

    标签: unix search grep ibm-midrange


    【解决方案1】:

    你需要做这样的事情:

    find . -type f -exec grep -l 'keyword' {} \;
    

    您还可以使用-name 选项限制查找并为其指定一个shell 正则表达式,例如'*.txt'。

    在哪里“。”是您所在的当前文件夹 - 您也可以提供任何目录路径而不是 '.'搜索给定的文件夹。

    见:man find

    【讨论】:

    • 感谢您的帮助。 -type f -exec grep -n '关键字' {} \;列出文件中的出现..但文件名未列出..如何像 grep -n 一样列出名称和出现。如果可以,请在答案中添加
    【解决方案2】:

    这个用法grep你当前目录下的每个文件(包括子目录)。

    find | xargs grep -l 'keyword'
    

    这就是你要找的吗?

    【讨论】:

      【解决方案3】:
      find ./folder -type f -exec grep -l 'keyword' {} \;
      

      ./folder 是您要搜索的文件夹

      【讨论】:

      • 感谢您的帮助。 -type f -exec grep -n '关键字' {} \;列出文件中的出现..但文件名未列出..如何像 grep -n 一样列出名称和出现。如果可以,请在答案中添加
      • 你想要grep -l 而不是grep -n,-n 给你匹配的行号,-l 给你文件名
      【解决方案4】:

      你可以使用:

      grep -rl 'keyword' *
      

      【讨论】:

        猜你喜欢
        • 2015-05-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-12
        • 2014-09-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多