Tengo algunas carpetas con el \n
cará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 \n
y 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 \nTest
que solo hay una carpeta?
find * -type d -print0 | while IFS= read -d '' file ; do rmdir $file ; done
comando tiene esta salida rmdir: failed to remove 'Test': No such file or directory
.
rmdir "$file"
-print0
directiva find y la-d
opción de lectura. Ver stackoverflow.com/a/40189667/7552