Ich habe einige Ordner mit \n
Charakter, 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 \n
und einmal Test
, weil der Ordnername zwei Zeilen hat.
Wie kann ich dieses Problem so lösen, dass das Skript \nTest
nur einen Ordner kennt ?
find * -type d -print0 | while IFS= read -d '' file ; do rmdir $file ; done
Befehl haben diese Ausgabe rmdir: failed to remove 'Test': No such file or directory
.
rmdir "$file"
-print0
Direktive von find und die-d
Leseoption verwenden. Siehe stackoverflow.com/a/40189667/7552