6

此命令将在所有目录和子目录中搜索包含“文本”的文件

grep -r "文本" *

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

4

4 回答 4

15

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

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

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

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

于 2013-06-04T18:41:55.533 回答
2

您可以使用 grep 命令:

grep -r "text" /path/to/dir/strings.xml
于 2014-11-14T13:21:56.820 回答
1

grep 支持 --include 选项,其用途是在目录中递归,仅搜索匹配 PATTERN 的文件。因此,请尝试以下操作:

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

我还尝试使用 find 似乎比 grep 快得多:

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

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

'grep -R string *.txt' 即使顶级目录没有 .txt 文件

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

于 2014-05-22T13:58:52.183 回答
-1

试试下面的命令

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

这将grep "strings\.xml"在返回的每个文件上运行find

于 2014-05-19T07:27:58.707 回答