Ho alcune cartelle con \ncarattere i loro nomi.
per esempio:
$ ls
''$'\n''Test'
Questo si riferisce a una cartella con il nome del test e una riga vuota prima del suo nome.
Quindi, quando eseguo alcuni script come questo, nella sua directory principale:
while IFS= read -r d; do
rmdir $d
done < <(find * -type d)
Mostra:
rmdir: failed to remove '': No such file or directory
rmdir: failed to remove 'Test': No such file or directory
Perché viene eseguito due volte, una volta acceso \ne l'altro acceso Test, perché il nome della cartella ha due righe.
Quindi, come posso risolvere questo problema in modo tale che lo script sappia che \nTestè solo una cartella?
find * -type d -print0 | while IFS= read -d '' file ; do rmdir $file ; donecomando ha questo output rmdir: failed to remove 'Test': No such file or directory.
rmdir "$file"
-print0direttiva find e l'-dopzione read. Vedere stackoverflow.com/a/40189667/7552