现在我正在使用这样的东西:
find . -name "*.xml" | xargs grep -l "foobar"
它可以工作,但是我想知道 grep 是否内置了此功能?
答案1
POSIX grep 没有这样的选项,但coreutils
grep 有。
grep -r --include='*.xml' -l foobar .
应该这么做。
FreeBSD grep
(和 OS X)似乎有同样的东西,而 Solaris 和 AIX 据我所知缺少它们。
答案2
您还可以这样做:
find . -name "*.xml" -exec grep -l "foobar" {} \;
答案3
您可以使用确认该命令的位置
ack --xml -l foobar
请注意,ack
的文件类型意味着它不仅仅考虑 *.xml 文件。任何扩展名为 .xml、.dtd、.xsl、.xslt 或 .ent 的文件都将被选中在 --xml 标志下进行搜索。请参阅 了解ack --help-types
类型和扩展名的列表。