Si c'était moi qui le faisais, j'utiliserais sed :
sed -e '$s/$/\n/' -s *.txt > finalfile.txt
Dans ce modèle sed, $ a deux significations, premièrement, il correspond au dernier numéro de ligne uniquement (en tant que plage de lignes sur lesquelles appliquer un modèle) et deuxièmement, il correspond à la fin de la ligne dans le modèle de substitution.
Si votre version de sed n'a pas -s
(traitez les fichiers d'entrée séparément), mais vous pouvez tout faire en boucle :
for f in *.txt ; do sed -e '$s/$/\n/' $f ; done > finalfile.txt
Vous pouvez faire :
for f in *.txt; do (cat "${f}"; echo) >> finalfile.txt; done
Assurez-vous que le fichier finalfile.txt
n'existe pas avant d'exécuter la commande ci-dessus.
Si vous êtes autorisé à utiliser awk
vous pouvez faire :
awk 'FNR==1{print ""}1' *.txt > finalfile.txt
Si vous avez suffisamment de fichiers pour pouvoir tous les lister, vous pouvez utiliser la substitution de processus dans Bash, en insérant une nouvelle ligne entre chaque paire de fichiers :
cat File1.txt <(echo) File2.txt <(echo) File3.txt > finalfile.txt