Isso é bem trivial com awk
:
$ awk '{print $0,FILENAME}' File*.txt
Apple File1.txt
Orange File1.txt
Banana File1.txt
monday File2.txt
tuesday File2.txt
wednesday File2.txt
Se você quiser uma guia em vez de um espaço entre a linha de entrada e o nome do arquivo, adicione -v OFS='\t'
à linha de comando para definir o OFS (Output Field Separator):
awk -v OFS='\t' '{print $0,FILENAME}' File*.txt
ou use:
awk '{print $0 "\t" FILENAME}' File*.txt
Isso pressupõe que os nomes dos arquivos não contenham =
caracteres. Se você não pode garantir que os nomes dos arquivos não contenham =
caracteres, você pode mudar isso para:
awk '{print $0 "\t" substr(FILENAME, 3)}' ./File*.txt
Embora com GNU awk
pelo menos, você receberia avisos se o nome do arquivo continha bytes não formando caracteres válidos (o que você poderia resolver corrigindo a localidade para C
(com LC_ALL=C awk...
) embora isso também tenha o efeito colateral de potencialmente alterar a linguagem de outras mensagens de erro, se houver).