"Ne peut pas supprimer 'some_directory': le répertoire n'est pas vide"

27

J'ai essayé de supprimer un répertoire, mais

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

Mais lister son contenu n'en retourne aucun

$ ls DE.aspx_files
$

Ajouté: En fait

$ 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

Quand j'essaye rm .fuse_hidden0001d4bf00000006, il est supprimé, mais un autre nouveau est .fuse_hidden0001d4bf00000007créé.

Je me demande donc ce qui s'est passé et comment résoudre ce problème?

Remarque: il s'agit d'un disque dur externe portable nouvellement acheté, et je copie simplement certains fichiers sur celui-ci à l'aide d'un programme de récupération de données.

OS: Ubuntu 12.04

Merci!

Tim
la source
3
Vous devez déterminer ce qui y monte un système de fichiers FUSE. Essayez mount | fgrep fusede le trouver et fusermount -u <mountpoint>de le démonter avant d'essayer de supprimer votre répertoire.
CodeGnome
Comment supprimer le fichier sans le monter?
Stephen Boston

Réponses:

16

Fichiers cachés

Vous pouvez avoir des fichiers cachés. Vous pouvez les trouver avec ls -lapour vous assurer que vous êtes d'accord avec vraiment les supprimer en premier. Ensuite, vous pouvez supprimer les fichiers avant d'exécuter rm -rou rmdirselon les besoins.

Forcer la suppression récursive

Vous pouvez également simplement faire rm -rfpour forcer la suppression récursive même si le répertoire cible contient des fichiers. Tous les avertissements habituels s'appliquent, mais cela fera le travail indépendamment de ce que contient votre répertoire - tant que vous avez les autorisations pour supprimer les fichiers et les répertoires, bien sûr.

CodeGnome
la source
1
vous pouvez également exécuter find DE.aspx_files -exec ls -la {} \;pour identifier les fichiers cachés ou les fichiers nommés avec des caractères spéciaux.
Tim Kennedy le
Merci, j'ai identifié le fichier caché coupable, qui peut être supprimé mais un nouveau frère est généré. Veuillez voir ma partie ajoutée. Forcer la suppression ne fonctionne pas non plus, car "Répertoire non vide".
Tim
57

Les fichiers du formulaire .fuse_hidden*sont créés par les systèmes de fichiers FUSE lorsqu'un fichier est supprimé mais toujours utilisé quelque part et doivent toujours avoir une entrée de répertoire. Ceci est similaire aux .nfs*fichiers des répertoires exportés via NFS .

Exécutez df -T .pour voir le type de système de fichiers monté sur le répertoire actuel et son point de montage. Pour un disque dur externe, il s'agit probablement d'un système de fichiers NTFS monté via le pilote NTFS-3G , qui est basé sur FUSE.

Le nom est un faux nom que le pilote du système de fichiers invente pour un fichier supprimé. Vous ne pouvez pas supprimer le fichier (ou plutôt, si vous créez le fichier, il réapparaît sous un autre nom). Vous ne pouvez pas non plus supprimer le répertoire, car il n'est pas vide. Vous devrez trouver ce qui utilise ce fichier. La cause la plus probable d'être utilisé est s'il est ouvert par une application. Exécutez lsof /media/mount-pointoù se /media/mount-pointtrouve le point de montage du système de fichiers et recherchez un fichier ouvert dans ce répertoire.

Gilles 'SO- arrête d'être méchant'
la source
6
CETTE réponse est celle qui résout réellement le problème
Martin Erhardt
Merci, ça marche. J'ai utilisé cette réponse et j'ai vu un tas de choses qui utilisaient mes dossiers. Redémarré, puis essayé de voir à nouveau la même liste - elle était vide. Et puis la suppression s'est bien déroulée.
Sevastyan
12

Pour les disques durs externes, ce problème peut être résolu par,

  • Faites un clic droit sur le dossier et sélectionnez Move to Trash
  • Vider la poubelle

Cela a fonctionné pour moi même si cela rm -rfn'a pas fonctionné.

DileepNimantha
la source
1
Oui ça marche. Pourquoi?! Cependant, les fichiers sont alors à la poubelle et sont tout aussi problématiques.
Stephen Boston
-1

Si sur le mac, faites également attention aux fichiers * .localized, qui peuvent devenir invisibles même pour 'ls -la', 'find' et leurs semblables sur un système de fichiers FUSE. [Cela a été découvert à l'aide d'un système de fichiers FUSE créé par ConnectedData Transporter sur un MacBook Pro.]

Dave
la source
-1

Cela peut également se produire lorsque vous amorcez un fichier dans un client torrent. Assurez-vous simplement d'éteindre le client torrent ou de supprimer le torrent d'amorçage.

Daniel Reid
la source