此命令将在所有目录和子目录中搜索包含“文本”的文件
grep -r "文本" *
如何指定仅在名为“strings.xml”的文件中搜索?
你会想要使用find
这个,因为grep
不会以递归方式工作(据我所知)。像这样的东西应该工作:
find . -name "strings.xml" -exec grep "text" "{}" \;
该find
命令从当前目录 ( .
) 开始搜索名为 strings.xml ( -name "strings.xml"
) 的文件,然后对于找到的每个文件,执行grep
指定的命令。花括号 ( "{}"
) 是一个占位符,find
用于指定它找到的文件的名称。更多细节可以在 中找到man find
。
另请注意,-r
不再需要 grep 选项,因为它find
是递归的。
您可以使用 grep 命令:
grep -r "text" /path/to/dir/strings.xml
grep 支持 --include 选项,其用途是在目录中递归,仅搜索匹配 PATTERN 的文件。因此,请尝试以下操作:
grep -R --include 'strings.xml' text .
我还尝试使用 find 似乎比 grep 快得多:
find ./ -name "strings.xml" -exec grep "text" '{}' \; -print
这些链接谈到了同样的问题,可能会对您有所帮助:
试试下面的命令
find . -type f | xargs grep "strings\.xml"
这将grep "strings\.xml"
在返回的每个文件上运行find