9 votos

Unidad externa, no puedo vaciar la basura, rm ve un archivo, pero ls -la no lo hace

Estaba limpiando una carpeta de música en mi disco externo y encontré un directorio que no puedo borrar por más que lo intento.

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

La operación no puede completarse porque el elemento "carpeta" está en uso.

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

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

Si utilizo ls -la para comprobar su contenido

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

*Si utilizo `rm -i ` dentro de la carpeta**

$ rm -i *
rm: 03 - Elusion.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 utilizo la Utilidad de Discos para reparar (primera ayuda) el disco y el volumen

El chequeo de salud fue aprobado, por lo que no se inició 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 - Elusion.mp3: No such file or directory , lo mismo que rm -i *.mp3 .

  • El archivo no aparece en el Finder, esa es la parte confusa, sea cual sea el problema de visualización del nombre del archivo que pueda tener el Terminal (siempre lo configuro para que use Unicode - UTF-8 ), creo que hay más fuerzas 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 ..

Así que aparentemente hay algo en ella pero ls -la no podía verlo, mientras que rm -i ¿está siendo raro con el nombre del archivo?

get info a través del menú contextual de la interfaz gráfica de usuario confirmó que hay un elemento en la carpeta, pero con cero bytes, y ciertamente no aparece en el finder.

No estoy seguro de qué hacer en este momento. Se agradece mucho la ayuda.

(Usando 10.13.4 + ExFAT en un disco externo)

1 votos

¿Has pensado en hacer una copia de seguridad de todas las cosas que quieres, que probablemente ya estén respaldadas de todos modos... y luego volver a formatear completamente esa unidad para empezar de nuevo?

0 votos

En ls -b ¿Mostrar el archivo? Si es así, puede ls -bi para obtener el inodo y seguir la siguiente respuesta, o bien copiar el nombre del archivo en el -b de salida.

0 votos

Creo que el problema principal no está en el nombre del archivo, ls -bi *.mp3 muestran el mismo resultado que el mostrado en OP.

11voto

Mapad Puntos 3033

El problema parece estar causado por un archivo llamado 03 - Elusion.mp3 situado en el directorio denominado carpeta .

Debido a que Terminal.app es incapaz de renderizar los signos diacríticos en los nombres de los archivos--bueno, lo es, pero eso está más allá del alcance de proporcionar la solución más simple para usted--oculta su fracaso al ocultar el nombre del archivo (algo inaudito para mí hasta ahora; ¿quizás son los cambios de High Sierra a /.file, /.volfs e inodos de 64 bits? Espera no importa; la edición de tu pregunta me dice que te he entendido mal). De todos modos, la existencia del archivo es conocida, junto con la irónica afirmación del Finder de que no existe. Obviamente, sí existe. He aquí cómo cambiar eso:

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

Copie la cadena de números del inodo proporcionado en la columna de la izquierda de la respuesta, que será algo así como

12345678 03 - E lusion.mp3

--y póngalo en este comando, que lo renombrará a algo que la terminal pueda representar correctamente:

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

--que le dará el archivo "deletemenow" en la carpeta "folder", de los que podrá disponer de la manera que más le convenga.

0 votos

Vaya, es un bicho impresionantemente terrible.

2 votos

No creo que esto sea exacto. El terminal puede ocultar caracteres individuales que no puede renderizar, pero no eliminará toda la línea de texto.

1 votos

@duskwuff De cualquier manera parece que el nombre del archivo está causando problemas, por lo que esta es una solución potencial de todos modos.

9voto

bitinn Puntos 126

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

La causa de mi problema es un conocido :

OS X es la excepción, tanto porque normaliza los nombres de los archivos como porque utiliza NFD en lugar del más común NFC .

Históricamente (no tan antiguo, era anterior a 10.11), OS X + HFS+ impone la forma NFD en todos los nombres de archivo y sólo obtendrá el resultado NFD de los comandos y las llamadas al sistema.

Entonces las cosas empiezan a cambiar, en 10.11, algunos resultados de las llamadas al sistema se normalizan a NFC 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 vuelve a cambiar: Apple decide que quiere normalizar a NFD en las llamadas a la pantalla y al sistema pero dejando los nombres de los archivos originales como están (así que tanto NFC como NFD son compatibles, pero si seleccionas el nombre del archivo en Finder o copias ls resultado en Terminal, se obtiene la forma NFD).

Todo esto es genial, hasta que pones un archivo con nombre de archivo NFD en una unidad externa que utiliza exFAT (ya que es el único formato multi-MacOS/Windows que admite archivos de más de 4 GB): MacOS 10.13 cree de algún modo que su archivo debe estar en formato NFC, por lo que se produce un error.

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

enter image description here

  • test.mp3
  • Elusion.mp3 ( E en NFC)
  • 03 - Elusion ( E en NFD)

(Puede copiar el unicode exacto aquí )

Cuando los monto en mi MacOS, esto es lo que veo:

enter image description here

y ls -laib resultado:

$ ls -laib
total 46592
2762318 drwxrwxrwx  1 user  staff    131072 Jan  3  2017 .
2685260 drwxrwxrwx  1 user  staff    131072 Jan  3  2017 ..
1572961 -rwxrwxrwx  1 user  staff  11672464 Aug 23  2014 Elusion.mp3
1572871 -rwxrwxrwx  1 user  staff  11672464 Aug 23  2014 test.mp3

Como puede ver, el archivo NFC está presente pero falta el archivo NFD.

Incluso si usted es consciente de la Problema de NFC/NFD en OS X En el caso de los discos externos exFAT, no se puede esperar que el problema sea el contrario (NFC está bien, pero NFD está en llamas).

Pero lo que podría haber causado mi archivo de música para utilizar NFD nombre de archivo en el primer lugar:

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

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

Lecciones:

  • El nombre de archivo Unicode sigue siendo una amenaza.
  • En realidad necesitas un Windows/Linux para solucionar este problema (si la situación es que tus archivos están en un disco externo exFAT).

0 votos

@bitlinn: Pincha en el segundo enlace de mi comentario dirigido a duskwulff y prueba la herramienta de normalización unicode Apfelstrudel que encontrarás allí. Muy útil para APFS, inútil con exFAT. ¿O es...?

1 votos

@DocG. este tema es un poco más complejo de lo que pensé inicialmente, pero he actualizado mi respuesta, ¡de nuevo!

0 votos

Sí, pensé que podrías terminar haciendo eso. Ver mi comentario anterior sobre Error 36 y hacer una búsqueda en la web para algo como "mover archivos de ida y vuelta Windows mac error 36" para obtener más información sobre la separación de las atribuciones de archivos en los sistemas no HFS. Este ha sido (otro) problema conocido de nomenclatura de archivos de MacOS / OS X desde la llegada de System 10.6. Entre la normalización Unicode y la separación de atributos dot_underscore, has experimentado un doble error. Dudo que el comando dot_clean tuviera alguna posibilidad.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X