Supondo que file_*.txt
corresponderia a todos os arquivos que você deseja processar e que os arquivos usam um caractere de tabulação para o delimitador:
tmpfile=$(mktemp)
for filename in file_*.txt; do
{ printf 'rows\t%s\n' "$filename"; cat "$filename"; } >$tmpfile &&
mv "$tmpfile" "$filename"
done
Isso iteraria os nomes de arquivos correspondentes e, para cada arquivo, seria exibida uma linha contendo o cabeçalho seguido do conteúdo do próprio arquivo em um arquivo temporário que, se tudo corresse bem, substituiria o arquivo original.
Observe que isso modifica os arquivos originais. Na sua pergunta, você dá um exemplo e diz que isso deve ser enviado para output.txt
, mas não está claro onde gravar o resultado para todos os outros arquivos, então fui com essa abordagem.