2013-06-04 88 views

回答

15

你會想爲此使用find,因爲grep將不會以遞歸方式工作(據我所知)。像這樣的東西應該工作:

find . -name "strings.xml" -exec grep "text" "{}" \; 

find命令搜索中使用舊名稱的strings.xml(-name "strings.xml")的文件在當前目錄(.)開始,然後爲每個找到的文件,指定的grep命令執行。大括號("{}")是find用於指定找到的文件的名稱的佔位符。更多的細節可以在man find找到。

另請注意,-r選項不再需要grep,因爲find遞歸地工作。

+0

謝謝,不要花括號做什麼呢? – thisiscrazy4

+0

@ thisiscrazy4以該信息更新。 –

+1

我已經使用此命令來查找特定類型的文件中的字符串。 找。 -name「* .java」-exec grep -rn「string」「{}」\; 它顯示出現但文件名不存在。如何輸出文件名稱。 請幫忙。 –

0

試試下面的命令

找到。 -type f | xargs的grep的「strings.xml中」 *

find命令搜索「string.xml串從當前目錄。

1

的grep支持的--include選項,它的使用是在目錄中搜索僅文件匹配模式遞歸。因此,嘗試類似如下:

find ./ -name "strings.xml" -exec grep "text" '{}' \; -print 

這些鏈接談論:

grep -R --include 'strings.xml' text . 

我也使用find這似乎是比grep的相當快嘗試同樣的問題,可以幫助你:

'grep -R string *.txt' even when top dir doesn't have a .txt file

http://www.linuxquestions.org/questions/linux-newbie-8/run-grep-only-on-certain-files-using-wildcard-919822/

2

您可以使用grep命令:

grep -r "text" /path/to/dir/strings.xml