Com o GNU grep
:
grep -lZ pattern_abc folder/file_* | xargs -r0 cat > new_file
(Se estiver usando zsh
, você pode substituir file_*
por file_*(.)
para considerar apenas arquivos regulares ou file_*(.n)
para classificar a lista de arquivos numericamente (então file_9
vem antes file_10
por exemplo).
Ou de forma recursiva e considerando apenas arquivos regulares :
find folder -name 'file_*' -type f -exec grep -lZ pattern_abc {} +|
xargs -r0 cat > new_file
Note, entretanto, que a lista de arquivos não está classificada, então os arquivos serão concatenados em alguma ordem aleatória.
Com zsh
para ordenar os arquivos numericamente dentro de cada pasta encontrada:
grep -lZ pattern_abc folder/**/file_*(Dn.) | xargs -r0 cat > new_file
( D
também procura em diretórios ocultos como find
).