UNIX grep - 如何在特定命名的文件中递归查找文本?

时间:2011-02-25 16:05:17

标签: unix grep

我想要一个包含单词“hot”的文件的文件名列表(不关心大小写)。这些文件也应位于目录/ test / home下,文件名“config”开头。

  1. 到目前为止,我能想到的最好的是以下内容。但是,它只能在目录/ test / home中使用。
  2. grep -ilrw“hot”* | grep -i config

    这种方法的另一个缺点是无法检查以“config”开头的文件名。例如,“grep -i ^ config”将不匹配“/test/home/configurations/config.xml”等文件

    有没有办法解决这个问题?

    1. 有人可以解释为什么以下不起作用吗?
    2. grep -ilrw“hot”config *

3 个答案:

答案 0 :(得分:4)

find . -name 'config*' | xargs grep -i "hot"

可能取决于你的UNIX风格,我认为

答案 1 :(得分:4)

如果您只想使用grep,那就不远了。我愿意;

grep -Rli --include='config*' "hot" *

- include,允许您指定要搜索的GLOB,最后的*允许您调整包含glob的文件/目录。

答案 2 :(得分:0)

如果您是GNU powertools的幸运用户,请找到适合您的人:

find /test/home -iregex ".*hot.*" -regex "config.*"