Ich habe einige Ordner mit \nCharakter, deren Namen.
zum Beispiel:
$ ls
''$'\n''Test'
Das bezieht sich auf einen Ordner mit einem Testnamen und einer Leerzeile vor seinem Namen.
Wenn ich also einige Skripte wie dieses im übergeordneten Verzeichnis ausführe:
while IFS= read -r d; do
rmdir $d
done < <(find * -type d)
Es zeigt:
rmdir: failed to remove '': No such file or directory
rmdir: failed to remove 'Test': No such file or directory
Weil es zweimal ausgeführt wird, einmal \nund einmal Test, weil der Ordnername zwei Zeilen hat.
Wie kann ich dieses Problem so lösen, dass das Skript \nTestnur einen Ordner kennt ?
find * -type d -print0 | while IFS= read -d '' file ; do rmdir $file ; doneBefehl haben diese Ausgabe rmdir: failed to remove 'Test': No such file or directory.
rmdir "$file"
-print0Direktive von find und die-dLeseoption verwenden. Siehe stackoverflow.com/a/40189667/7552