Talvez algo como:
find . -name 'file[0-9]*_*' -type f -exec awk '
FNR == 1 {
output = FILENAME
sub(/.*\/file/, "", output)
sub(/[^0-9].*/, "", output)
output = "merge" output
}
{print > output}' {} +
Observe que find encontra arquivos em uma ordem não especificada, portanto, os arquivos serão mesclados em uma ordem não especificada.
Observe que, se todos os arquivos para um determinado arquivo merge estiverem vazios, o arquivo merge não será criado. Se você preferir obter um arquivo merge vazio nesses casos, e se seu awk for o GNU, você pode alterar o acima para:
find . -name 'file[0-9]*_*' -type f -exec gawk '
BEGINFILE {
output = FILENAME
sub(/.*\/file/, "", output)
sub(/[^0-9].*/, "", output)
output = "merge" output
printf "" > output
}
{print > output}' {} +