web-dev-qa-db-fra.com

Pourquoi je ne peux pas supprimer un dossier?

Could not remove the folder [Folder name].

Show more details
 Error removing file: Directory not empty

Cancel-Skip All-Skip

J'ai essayé de supprimer ces dossiers du terminal avec:

rm -r
14
tepheno

Avez-vous essayé Sudo rm -r. Quel type de fichiers existe-t-il? Vous pouvez également supprimer tous les fichiers d'abord, puis supprimer le dossier. C'est du travail supplémentaire, mais parfois, cela en vaut la peine.

Sudo est pour les actions de superutilisateur.

9
wlraider70

J'ai eu ce problème avec un dossier sur un système de fichiers btrfs. Vérifier les points de montage et lsof est la chose normale à rechercher. Dans mon cas, c'était une corruption causée par un ancien bug, depuis corrigé:

Les choses normales à vérifier:

  • lsof + D <chemin> - Ceci va l i s t tous o stylo f iles. Vous ne pouvez pas supprimer un dossier contenant des fichiers ouverts, bien que cela donne normalement une erreur légèrement différente: "Périphérique ou ressource occupé". Notez que si vous omettez le "+ D <chemin>", lsof affichera une liste de tous les dossiers de tous les systèmes de fichiers - ce qui fera perdre du temps. ;)
  • mount : Ceci vous montrera les systèmes de fichiers actuellement montés. Vous ne pouvez pas supprimer un point de montage monté activement ni ses dossiers parents.
  • Sous-liste btrfs <chemin> : Semblable à un point de montage, vous ne pouvez pas supprimer un sous-volume btrfs à l'aide de la commande spécifique à btrfs: btrfs supprimer un sous-volume <chemin> .

Contournement de la corruption

En cas de corruption où il ne peut pas être facilement corrigé, la solution de base consiste à sauvegarder, formater le système de fichiers, puis à restaurer (en laissant de côté les données incorrectes). Selon la quantité de données que vous avez dans le système de fichiers, cela peut être une corvée. : - /

Dans mon cas, le dossier du problème se trouvait dans un sous-volume, ce qui m'a permis de procéder comme indiqué ci-dessus, mais en supprimant uniquement le sous-volume au lieu du système de fichiers entier. J'ai sauvegardé mes données et supprimé le sous-volume: btrfs sous-del <chemin-sous-volume> . J'ai ensuite été capable de restaurer dans un nouveau sous-volume, en laissant de côté le dossier du problème.

Corruption de i_size

La cause dans mon cas s'est avérée être la corruption de i_size , où il était différent de zéro. Btrfs utilise i_size pour indiquer si le dossier est vide ou non. Pour vérifier cela, lancez:

stat -c %s <foldername>

La taille d'un dossier vide dans btrfs doit être zéro. En ext, c'est typiquement 4k.

Liens connexes:

https://btrfs.wiki.kernel.org/index.php/Problem_FAQ#I_cannot_delete_an_empty_directory

9
zaTricky

Essayez cd dans le répertoire, puis supprimez tous les fichiers en utilisant rm -rf *. Essayez ensuite de sortir du répertoire et utilisez rmdir pour le supprimer.

5
jkd

Essayez: rmdir --ignore-fail-on-non-empty *directory*

0
Jamie

Essayez Sudo rm -rf [Folder name]

Si le répertoire n'est toujours pas affiché, cela signifie que le répertoire est utilisé. essayez de le fermer ou vérifiez quel programme l’utilise, puis réutilisez la commande.

Travaillé pour moi lorsque j'essayais de supprimer le projet Unity, il était utilisé par le hub Unity. simplement fermé le hub de l'unité et réécrit la commande a bien fonctionné.

0
Molham Mohamed

J'ai des dossiers dans Windows montés sur une machine virtuelle Ubuntu VirtualBox. Je ne pouvais pas les supprimer du gestionnaire de fichiers Windows ou de l'intérieur de la VM avec rmdir ou rm -Rf *.

TLDR: J'ai finalement pu les supprimer dans Git Bash (sous Windows, bien sûr), en utilisant rm -Rf *.

Lorsque j'ai essayé de supprimer dans le gestionnaire de fichiers Windows, il a été dit que j'avais besoin de privilèges d'administrateur pour supprimer les dossiers. Mais, même en tant qu'administrateur, cela échouait toujours.

Depuis Ubuntu VM (où je n’ai jamais eu de problèmes pour supprimer des fichiers partagés auparavant), j’ai eu l’erreur cannot remove protocol error, ainsi que quelques autres.

Enfin, dans Git Bash sous Windows, j'ai pu supprimer les dossiers. Je devine que Git Bash avait une sorte de verrou sur les dossiers. Dans Git Bash, mon répertoire de travail était l’un de ceux que j’essayais de supprimer. Je me suis retiré, puis supprimé à l'aide de rm -Rf sans erreur.

0
Buttle Butkus

Si vous n'avez pas défini d'autorisations en écriture, vous ne pouvez pas supprimer le répertoire.

Dans l'exemple ci-dessous, même si je suis propriétaire du répertoire, je ne peux pas le supprimer. Une fois que j'ajoute des autorisations d'écriture avec chmod - tout réussit.

DIR:/xieerqi
skolodya@ubuntu:$ ls -dl TESTDIR/                                              
dr-xr-xr-x 2 xieerqi xieerqi 4096 Jan 24 16:06 TESTDIR//

DIR:/xieerqi
skolodya@ubuntu:$ rm -rf TESTDIR/                                              
rm: cannot remove ‘TESTDIR/one & two’: Permission denied
rm: cannot remove ‘TESTDIR/tom&jerry’: Permission denied
rm: cannot remove ‘TESTDIR/jekyl&hide’: Permission denied
rm: cannot remove ‘TESTDIR/pdfReader.sh’: Permission denied

DIR:/xieerqi
skolodya@ubuntu:$ chmod +w TESTDIR/                                            

DIR:/xieerqi
skolodya@ubuntu:$ rm -rf TESTDIR/                                              

DIR:/xieerqi
skolodya@ubuntu:$ echo $?
0
0
Sergiy Kolodyazhnyy

Allez dans le dossier juste avant celui que vous souhaitez supprimer et exécutez cette commande en changeant le nom de pliage par le nom de votre dossier: rm -rf nom de pli

R signifie récursif et f signifie force.

0
Ramon Suarez