递归搜索名为string.xml的文件以获取特定文本

时间:2013-06-04 18:38:17

标签: unix grep

此命令将在所有目录和子目录中搜索包含“text”

的文件
grep -r "text" *

如何指定仅搜索名为“strings.xml”的文件?

4 个答案:

答案 0 :(得分:15)

你会想要使用find,因为grep不会以递归的方式工作(据我所知)。这样的事情应该有效:

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

find命令从当前目录(.)开始搜索名为strings.xml(-name "strings.xml")的文件,然后对于每个找到的文件执行{指定了{1}}命令。大括号(grep)是占位符,"{}"用来指定它找到的文件的名称。更多细节可以在find中找到。

另请注意,不再需要grep的man find选项,因为-r递归工作。

答案 1 :(得分:2)

您可以使用grep命令:

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

答案 2 :(得分:1)

grep支持--include选项,其用途是仅在搜索匹配PATTERN的文件的目录中进行递归。所以,尝试下面的内容:

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

我也尝试使用find,它似乎比grep快得多:

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

这些链接讲述了同样的问题,可能对您有所帮助:

'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/

答案 3 :(得分:-1)

尝试以下命令

find . -type f | xargs grep "strings\.xml"

这将对grep "strings\.xml"

返回的每个文件运行find