Mam kilka folderów z \ncharakterem to ich nazwy.
na przykład:
$ ls
''$'\n''Test'
Dotyczy to folderu z nazwą testu i pustą linią przed jego nazwą.
Kiedy więc uruchomię kilka takich skryptów w katalogu nadrzędnym:
while IFS= read -r d; do
rmdir $d
done < <(find * -type d)
To pokazuje:
rmdir: failed to remove '': No such file or directory
rmdir: failed to remove 'Test': No such file or directory
Ponieważ działa dwa razy, raz włączony, \na drugi włączony Test, ponieważ nazwa folderu ma dwie linie.
Jak więc rozwiązać ten problem, aby skrypt wiedział, że \nTestjest tylko jeden folder?
find * -type d -print0 | while IFS= read -d '' file ; do rmdir $file ; donepolecenie ma takie wyjście rmdir: failed to remove 'Test': No such file or directory.
rmdir "$file"
-print0dyrektywy find i-dopcji read. Zobacz stackoverflow.com/a/40189667/7552