2016-01-13 66 views
0

我有一个目录,有成千上万的其他目录,每个目录都包含一致的目录结构以及特定的文件名,我希望为文本模式提供帮助。如何在特定目录结构下以递归方式grep特定文件名中的文本?

比方说,我从我的根目录有,我会发起的grep,目录如下:

/ 
    /dir1 
     /etc 
     /net 
      /file.properties 
    /dir2 
     /etc 
     /net 
      /file.properties 

我想在所有的目录DIR1,DIR2等搜索,在所有的文本模式属于路径“*/etc/net/file.properties”的文件.properties文件

我的grep命令将如何在file.properties下的所有dir1,dir2 ... dirN中搜索file.properties下的我指定的路径结构?

我现在拥有的是:

grep -r "text here" --include='*/net/etc/file.properties' . 
+0

你只有使用grep吗?你不能找到所有的file.properties文件,然后从该结果集grep? – Alp

回答

1

显而易见的答案似乎是grep "text here" */etc/net/file.properties。是否有太多目录可以使用? 如果是这样,你可能可以做类似

for dir in *; do 
    if [ -f "$dir/net/etc/file.properties" ]; then 
     echo "$dir/net/etc/file.properties" 
    fi 
done | xargs grep "text here" 
+0

这有效,但它不会将grep搜索限制在该路径结构下的文件。我知道这是因为通过搜索grep输出警告,如./dir1234/var/log:没有这样的文件或目录。 –

+0

字符串“'/ var'”直到现在才出现在此线程中。你知道它来自哪里吗? – arensb

0

找到。 -name“file.properties”| grep“/etc/net/file.properties”| xargs grep“text here”