Tengo algunas carpetas con el \ncarácter de sus nombres.
por ejemplo:
$ ls
''$'\n''Test'
Eso se refiere a una carpeta con el nombre de la Prueba y una línea vacía antes de su nombre.
Entonces, cuando ejecuto algunos scripts como este, en su directorio principal:
while IFS= read -r d; do
rmdir $d
done < <(find * -type d)
Muestra:
rmdir: failed to remove '': No such file or directory
rmdir: failed to remove 'Test': No such file or directory
Porque se ejecuta dos veces, una \ny otra Test, porque el nombre de la carpeta tiene dos líneas.
Entonces, ¿cómo puedo resolver este problema de modo que el script sepa \nTestque solo hay una carpeta?
find * -type d -print0 | while IFS= read -d '' file ; do rmdir $file ; donecomando tiene esta salida rmdir: failed to remove 'Test': No such file or directory.
rmdir "$file"
-print0directiva find y la-dopción de lectura. Ver stackoverflow.com/a/40189667/7552