有没有办法grep与受限制的文件types?

现在我正在使用这样的东西:

find . -name "*.xml" | xargs grep -l "foobar"

它的工作原理,但我想知道如果grep有内置的这个function?

POSIX grep没有这样的选项,但是coreutils grep呢。

 grep -r --include='*.xml' -l foobar . 

应该这样做。

FreeBSD的grep (和OS X)似乎有相同的东西,Solaris和AIX缺乏它们的AFAICT。

你也可以这样做:

 find . -name "*.xml" -exec grep -l "foobar" {} \; 

你可以在命令所在的地方使用ack

 ack --xml -l foobar 

请注意, ack的文件types意味着它不仅仅考虑* .xml文件。 任何扩展名为.xml,.dtd,.xsl,.xslt或.ent的文件都将被选中在–xml标志下进行search。 请参阅ack --help-types以获取types和扩展名列表。