Kdybych to dělal já, použil bych sed:
sed -e '$s/$/\n/' -s *.txt > finalfile.txt
V tomto vzoru sed má $ dva významy, za prvé odpovídá pouze poslednímu číslu řádku (jako rozsah řádků, na které se má použít vzor) a za druhé odpovídá konci řádku v substitučním vzoru.
Pokud vaše verze sed nemá -s
(vstupní soubory zpracujte samostatně), ale můžete to udělat vše jako smyčku:
for f in *.txt ; do sed -e '$s/$/\n/' $f ; done > finalfile.txt
Můžete:
for f in *.txt; do (cat "${f}"; echo) >> finalfile.txt; done
Ujistěte se, že soubor finalfile.txt
před spuštěním výše uvedeného příkazu neexistuje.
Pokud máte povoleno používat awk
můžete udělat:
awk 'FNR==1{print ""}1' *.txt > finalfile.txt
Pokud máte málo souborů na to, abyste mohli vypsat každý z nich, můžete použít substituci procesů v Bash a vložit nový řádek mezi každou dvojici souborů:
cat File1.txt <(echo) File2.txt <(echo) File3.txt > finalfile.txt