2016-01-13 72 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」

相關問題