Ich habe auf einem Linux System Ext4 einen Ordner mit Dateinamen, die
Leerzeichen enthalten. Ein kleines Shellskript, welches die Dateinamen
einlesen und in einer Datei speichern sollte, funktioniert. Was schief
läuft ist die Formatierung.
echo ich das Ergebnis in die Datei, wird jeder von einem Leerzeichen
getrennte Namensbestandteil als $datei interpretiert und mit einem
eigenen Newline versehen.
das
ist
dann
der
dateiname.txt
1 | ausgabe=$(find / -name "*.txt"); for datei in $ausgabe; do filename=$(basename $datei) && echo $filename >> ./textfile.txt; done
|
Bei printf das gleiche in Grün, nur das dieses Mal überhaupt kein
Newline mehr eingesetzt wird, was dann so aussieht
datei name1.txtdatei name2.txt
1 | ausgabe=$(find / -name "*.txt"); for datei in $ausgabe; do filename=$(basename $datei) && printf $filename >> ./textfile.txt; done
|
Bei dem printf-Ansatz habe ich versucht mittels | sed s///g einfach ein
Newline am jeweiligen Ende des Dateinamens einzusetzen. Die Substitutuon
klappt bei anderen Zeichen, aber nicht beim Newline. Escaping
funktioniert nicht oder ist falsch | sed -e s/.txt/.txt\\n/g (wenn ich
es grad richtig in Erinnerung habe.)
auch ausprobiert
Nüschte, wieder Essig.
Gibt es überhaupt eine einfache Möglichkeit mit echo oder printf so
etwas 👆 umzusetzen?