Ho alcune cartelle con \n
carattere 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 \n
e 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 ; done
comando ha questo output rmdir: failed to remove 'Test': No such file or directory
.
rmdir "$file"
-print0
direttiva find e l'-d
opzione read. Vedere stackoverflow.com/a/40189667/7552