Unidad externa, no se puede vaciar la papelera, rm ve un archivo, pero ls -la no

9

Estaba limpiando una carpeta de música en mi disco externo y encontré un directorio que no puedo eliminar sin importar lo que intente.

Si lo pongo en la papelera de reciclaje a través de la GUI

  

La operación no se puede completar porque la "carpeta" del elemento está en uso.

Si uso rm -rf para eliminarlo a través de la terminal

$ rm -rf folder/
rm: folder/: Directory not empty

Si uso ls -la para verificar su contenido

$ ls -la
total 512
drwxrwxrwx  1 user  staff  131072 Jan  3  2017 .
drwxrwxrwx  1 user  staff  131072 Jan  3  2017 ..

Si uso rm -i * dentro de la carpeta

$ rm -i *
rm: 03 - Ēlusion.mp3: No such file or directory

Si utilizo sudo lsof +D folder/ para comprobar si hay algún archivo abierto

No se devuelve nada al salir del programa.

Si uso la Utilidad de Discos para reparar el disco y el volumen (primeros auxilios)

Se pasó el control de salud para que no se haya iniciado ninguna reparación.

Si reinicio macOS

El problema persiste.

Información adicional:

  • Puedo mover la carpeta dentro de la unidad, pero no a otra unidad.

  • Puedo cambiar el nombre de la carpeta.

  • ls -i *.mp3 devuelve ls: 03 - Ēlusion.mp3: No such file or directory , igual que rm -i *.mp3 .

  • El archivo no se muestra en el Finder, que es una parte confusa, sea cual sea el problema de visualización del nombre de archivo que Terminal podría tener (siempre lo configuro para usar Unicode - UTF-8 ), creo que hay más fuerza en juego.

En respuesta a las preguntas, no, ls -ib no devuelve nada.

$ ls -i
$ ls -ib
$ ls -laib
total 512
2762318 drwxrwxrwx  1 user  staff  131072 Jan  3  2017 .
2685260 drwxrwxrwx  1 user  staff  131072 Jan  3  2017 ..

Entonces, aparentemente hay algo en él pero ls -la no pudo verlo, mientras que rm -i está siendo raro con el nombre de archivo?

get info a través del menú contextual de la GUI confirmó que hay 1 elemento en la carpeta, pero con cero bytes, y ciertamente no aparece en el buscador.

No estoy seguro de qué hacer en este momento. Ayuda muy apreciada!

(Utilizando 10.13.4 + ExFAT en una unidad externa)

    
pregunta bitinn 12.07.2018 - 20:40

2 respuestas

10

El problema parece deberse a un archivo llamado 03 - Ēlusion.mp3 ubicado dentro del directorio llamado carpeta .

Debido a que Terminal.app no puede representar signos diacríticos en los nombres de los archivos, bueno, lo es, pero eso está fuera del alcance de proporcionarle la solución más sencilla: oculta su falla al ocultar el nombre del archivo (algo inaudito por antes que yo, ¿tal vez los cambios de High Sierra a /.file, /.volfs e 64-bit inodes? Espere, no importa, su edición a su pregunta me dice que lo entendí mal.) De todos modos, la existencia del archivo es conocida, junto con el argumento irónico del Finder de que no existe. Obviamente, lo hace. Aquí es cómo cambiar eso:

Primero, determine el número de inodo del archivo. En Terminal.app, cd al directorio "carpeta" y emita este comando: ls -i *.mp3

Copie la cadena numérica del inodo que se proporciona en la columna de la izquierda de la respuesta, que será algo así como

12345678 03 - E ̄lusion.mp3

--y colóquelo en este comando, que cambiará su nombre a algo que el terminal pueda representar correctamente:

find . -inum 12345678 -exec mv {} deletemenow \;

: le ofrece el archivo "eliminar" en la carpeta "carpeta", ambos de los cuales puede deshacerse de la forma que mejor se adapte a su gusto.

    
respondido por el Doc G. 12.07.2018 - 22:18
9

Me tomó mucho tiempo llegar a este resumen, pero creo que es la respuesta definitiva.

La causa de mi problema es una conocida :

  

OS X es el extraño, ya que normaliza los nombres de los archivos y usa NFD en lugar de los más comunes NFC .

Históricamente (no es tan antiguo, era anterior a la versión 10.11), OS X + HFS + aplica el formulario NFD en todos los nombres de archivo , y solo obtendrá el resultado NFD de los comandos y las llamadas al sistema.

Luego, las cosas comienzan a cambiar, en 10.11, algunos resultados de llamadas del sistema se normalizan a NFC , lo que lo pone en línea con Windows y Linux, pero a costa de romper algunos programas que esperan NFD en OS X.

Pero desde la introducción de macOS 10.13 + AFPS, el comportamiento cambia nuevamente: Apple decide que quiere normalizar a NFD en pantalla y llamadas al sistema , pero deje los nombres de archivo originales como están (por lo tanto, se admiten tanto NFC como NFD, pero si selecciona el nombre de archivo en el Finder o copia el resultado de ls en el Terminal, debe obtener formulario NFD).

Todo esto es fantástico, hasta que coloque un archivo con el nombre de archivo NFD en una unidad externa con exFAT (ya que es el único formato de macros / Windows con soporte de tamaño de archivo de 4GB +): macOS 10.13 de alguna manera cree que su archivo debe estar en formato NFC, por lo que está dañado.

De hecho, aquí hay una prueba rápida, tengo una carpeta en Windows en mi disco exFAT con 3 archivos:

  • test.mp3
  • Ēlusion.mp3(ĒenNFC)
  • 03-Ēlusion(ĒenNFD)

(Puedecopiar el unicode exacto aquí )

Cuando los monte en mi macOS, esto es lo que veo:

Resultado

yls-laib:

$ls-laibtotal465922762318drwxrwxrwx1userstaff131072Jan32017.2685260drwxrwxrwx1userstaff131072Jan32017..1572961-rwxrwxrwx1userstaff11672464Aug232014Ēlusion.mp31572871-rwxrwxrwx1userstaff11672464Aug232014test.mp3

Comopuedever,elarchivoNFCestápresenteperofaltaelarchivoNFD.

Inclusosiconoceel problema NFC / NFD en OS X , es posible que no espera que la unidad externa exFAT se enfrente a este problema de la manera opuesta (NFC está bien, pero NFD es pantalón de fuego).

Pero, en primer lugar, lo que pudo haber causado que mi archivo de música usara el nombre de archivo NFD:

  • Originalmente descargué este archivo de música en 10.9 / 10.10 con una Mac más antigua, que aplica el nombre de archivo NFD.
  • En algún momento, los muevo a una unidad Windows + NTFS, que no exige NFC / NFD, por lo que se conserva el nombre de archivo original de NFD.
  • Ahora quiero volver a mover este archivo a mi macOS 10.13 + APFS usando una unidad exFAT (exFAT admite la misma convención UTF-16 que NTFS).
  • El infierno se desata.

Podría haber copiado el archivo a través de una unidad en red o TeamViewer, y estaría bien, pero exFAT está activando este error en macOS.

Lecciones :

  • El nombre de archivo Unicode sigue siendo una amenaza.
  • Realmente necesita un Windows / Linux para solucionar este problema (si la situación es que su archivo está en una unidad externa exFAT).
respondido por el bitinn 13.07.2018 - 08:18

Lea otras preguntas en las etiquetas