com zsh
:
ext='(txt|tsv|text|log)'
for f (**/*.$~ext(.)) cat < $f >> $f:t:r.merged
A ordem de mesclagem será alfabética dentro de um mesmo diretório. Ou seja, a/file.txt
será incluído antes de b/file.txt
e a/file.log
antes de a/file.txt
.
Observe também que arquivos ocultos (aqueles cujo nome começa com .
) não serão considerados (adicione o qualificador D
glob se você quiser).