Você poderia tentar algo como:
find . -name foo.xml -exec grep REGEX '{}' \;
editar No seu caso, o REGEX é
'[0-9][0-9]T[0-9][0-9]'
Eu estou tentando produzir a linha contendo um determinado padrão localizado em arquivos especificamente nomeados em uma hirearchy de diretório não estruturado. Cada arquivo em que estou interessado é chamado "foo.xml". O padrão que me interessa se parece com: <digit><digit>T<digit><digit>
(como um regex PERL: \d\dT\d\d
). Eu quero a saída da linha inteira que corresponde a esse padrão (mesmo o material extra nessa linha que não corresponde ao padrão).
Onde estou:
find . | grep foo.xml
executado no "root" me fornece uma lista dos arquivos que eu gostaria de escanear.
O que eu faço daqui?
Eu prefiro fazer isso na linha de comando. Eu poderia facilmente escrever um script PERL, mas provavelmente há uma maneira realmente simples de fazer isso.
Alternativamente, desde que você mencionou o PERL, você pode usar a opção -perl-regexp do grep:
find . -name foo.xml -exec grep -P '\d\dT\d\d' '{}' \;
Recurso interessante se você estiver acostumado a perl regexes.
Tags command-line linux