O POSIX grep não tem essas opções, mas coreutils
grep faz isso.
grep -r --include='*.xml' -l foobar .
deve fazer isso.
FreeBSD grep
(e OS X) parecem ter a mesma coisa, Solaris & AIX falta-lhes AFAICT.
agora eu estou usando algo assim:
find . -name "*.xml" | xargs grep -l "foobar"
funciona, mas eu queria saber se o grep tem essa funcionalidade embutida?
Você também pode fazer:
find . -name "*.xml" -exec grep -l "foobar" {} \;
Você pode usar ack onde o comando seria
ack --xml -l foobar
Observe que os tipos de arquivos de ack
significam que ele não considera apenas os arquivos * .xml. Qualquer arquivo com a extensão .xml, .dtd, .xsl, .xslt ou .ent será selecionado para pesquisa sob o sinalizador --xml. Veja ack --help-types
para uma lista de tipos e extensões.