"No se puede eliminar 'some_directory': el directorio no está vacío"

27

Traté de eliminar algún directorio, pero

$ rm DE.aspx_files -r
rm: cannot remove `DE.aspx_files': Directory not empty

Pero enumerar su contenido no devuelve ninguno

$ ls DE.aspx_files
$

Agregado: en realidad

$ ls -la DE.aspx_files

total 4
drwx------ 1 ting ting 4096 Sep 14 20:48 .
drwx------ 1 ting ting    0 Sep 13 22:34 ..
-rw------- 1 ting ting    0 Sep 13 22:34 .fuse_hidden0001d4bf00000006

Cuando lo intento rm .fuse_hidden0001d4bf00000006, se elimina, pero se .fuse_hidden0001d4bf00000007crea otro nuevo .

Entonces, me pregunto qué pasó y cómo solucionar este problema.

Nota: es una unidad de disco duro portátil externa recién comprada, y solo copie algunos archivos con un programa de recuperación de datos.

SO: Ubuntu 12.04

¡Gracias!

Tim
fuente
3
Debe averiguar qué está montando un sistema de archivos FUSE allí. Intente mount | fgrep fuseencontrarlo y fusermount -u <mountpoint>desmontarlo antes de intentar eliminar su directorio.
CodeGnome
¿Cómo se elimina el archivo sin montar?
Stephen Boston el

Respuestas:

16

Archivos ocultos

Es posible que tenga archivos ocultos. Puede encontrarlos ls -lapara asegurarse de que está bien si realmente los elimina primero. Luego puede eliminar los archivos antes de ejecutarlos rm -ro rmdirsegún sea necesario.

Forzar la eliminación recursiva

También puede hacerlo rm -rfpara forzar la eliminación recursiva incluso si el directorio de destino contiene archivos. Se aplican todas las advertencias habituales, pero hará el trabajo independientemente de lo que contenga su directorio, siempre que tenga permisos para eliminar los archivos y directorios, por supuesto.

CodeGnome
fuente
1
Además, puede ejecutar find DE.aspx_files -exec ls -la {} \;para identificar archivos ocultos, o archivos nombrados con caracteres especiales.
Tim Kennedy
Gracias, he identificado el archivo oculto culpable, que se puede eliminar pero se genera un nuevo hermano. Por favor vea mi parte agregada. Forzar eliminación tampoco funciona, porque "Directorio no está vacío".
Tim
57

Los archivos del formulario .fuse_hidden*son creados por los sistemas de archivos FUSE cuando se elimina un archivo pero todavía está en uso en algún lugar y aún debe tener una entrada de directorio. Esto es similar a los .nfs*archivos en directorios exportados a través de NFS .

Ejecute df -T .para ver el tipo de sistema de archivos que está montado en el directorio actual y su punto de montaje. Para un disco duro externo, lo más probable es que este sea un sistema de archivos NTFS montado a través del controlador NTFS-3G , que se basa en FUSE.

El nombre es un nombre falso que el controlador del sistema de archivos inventa para un archivo eliminado. No puede eliminar el archivo (o más bien, si crea el archivo, vuelve a aparecer con otro nombre). Tampoco puede eliminar el directorio, ya que no está vacío. Tendrá que encontrar qué está usando este archivo. La causa más probable de estar en uso es si alguna aplicación la abre. Ejecute lsof /media/mount-pointdónde /media/mount-pointestá el punto de montaje del sistema de archivos y busque un archivo abierto en ese directorio.

Gilles 'SO- deja de ser malvado'
fuente
66
ESTA respuesta es la que realmente resuelve el problema
Martin Erhardt
Gracias funciona. Usé esta respuesta y vi un montón de cosas que usaban mis carpetas. Reinició, luego trató de ver la misma lista nuevamente, estaba vacía. Y luego la eliminación se realizó sin problemas.
Sevastyan
12

Para discos duros externos, este problema podría resolverse mediante,

  • Haga clic derecho en la carpeta y seleccione Move to Trash
  • Vaciar la basura

Funcionó para mí, incluso si rm -rfno funcionó.

DileepNimantha
fuente
1
Si esto funciona. ¡¿Por qué?! Sin embargo, los archivos están en la papelera y son igual de problemáticos.
Stephen Boston el
-1

Si está en la Mac, tenga en cuenta también los archivos * .localized, que pueden volverse invisibles incluso para 'ls -la', 'find' y sus gustos en un sistema de archivos FUSE. [Esto se descubrió utilizando un sistema de archivos FUSE creado por ConnectedData Transporter en una MacBook Pro.]

Dave
fuente
-1

Esto puede suceder cuando también está sembrando un archivo en un cliente torrent. Solo asegúrese de apagar el cliente de torrent o elimine el torrent inicial.

Daniel Reid
fuente