Wenn ich es tun würde, würde ich sed verwenden:
sed -e '$s/$/\n/' -s *.txt > finalfile.txt
In diesem Sed-Muster hat $ zwei Bedeutungen, erstens entspricht es nur der letzten Zeilennummer (als Bereich von Zeilen, auf die ein Muster angewendet werden soll) und zweitens entspricht es dem Ende der Zeile im Substitutionsmuster.
Wenn Ihre Version von sed nicht über -s
verfügt (Eingabedateien separat verarbeiten) Sie können dies jedoch alles als Schleife ausführen:
for f in *.txt ; do sed -e '$s/$/\n/' $f ; done > finalfile.txt
Sie können Folgendes tun:
for f in *.txt; do (cat "${f}"; echo) >> finalfile.txt; done
Stellen Sie sicher, dass die Datei finalfile.txt
existiert nicht, bevor Sie den obigen Befehl ausführen.
Wenn Sie awk
verwenden dürfen Sie können Folgendes tun:
awk 'FNR==1{print ""}1' *.txt > finalfile.txt
Wenn Sie nur wenige Dateien haben, um jede einzelne aufzulisten, können Sie die Prozessersetzung in Bash verwenden, indem Sie zwischen jedem Dateipaar einen Zeilenumbruch einfügen:
cat File1.txt <(echo) File2.txt <(echo) File3.txt > finalfile.txt