Si fuera yo quien lo hiciera, usaría sed:
sed -e '$s/$/\n/' -s *.txt > finalfile.txt
En este patrón sed, $ tiene dos significados, en primer lugar, coincide solo con el último número de línea (como un rango de líneas para aplicar un patrón) y, en segundo lugar, coincide con el final de la línea en el patrón de sustitución.
Si su versión de sed no tiene -s
(procesar los archivos de entrada por separado), aunque puedes hacerlo todo como un bucle:
for f in *.txt ; do sed -e '$s/$/\n/' $f ; done > finalfile.txt
Puedes hacer:
for f in *.txt; do (cat "${f}"; echo) >> finalfile.txt; done
Asegúrese de que el archivo finalfile.txt
no existe antes de ejecutar el comando anterior.
Si se le permite usar awk
puedes hacer:
awk 'FNR==1{print ""}1' *.txt > finalfile.txt
Si tiene suficientes archivos para enumerar cada uno, entonces puede usar la sustitución de procesos en Bash, insertando una nueva línea entre cada par de archivos:
cat File1.txt <(echo) File2.txt <(echo) File3.txt > finalfile.txt