此命令将在所有目录和子目录中搜索包含“text”
的文件grep -r "text" *
如何指定仅搜索名为“strings.xml”的文件?
答案 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
答案 3 :(得分:-1)
尝试以下命令
find . -type f | xargs grep "strings\.xml"
这将对grep "strings\.xml"
find