Comment supprimer un répertoire non vide dans Terminal?

631

Comment puis-je supprimer le répertoire suivant?

J'ai tapé:

rmdir lampp

Cette erreur revient:

rmdir: failed to remove `lampp': Directory not empty

Existe-t-il une commande permettant de supprimer tous les fichiers du répertoire et le dossier?

Naveen
la source
1
Je ne parviens pas à supprimer un répertoire comme "Nouveau dossier" à l'aide de toutes les commandes détaillées ci-dessus. C'est double formulation. Mais je veux supprimer ce répertoire. Toutes les suggestions seront les bienvenues. T.Divakara, Bangalore, Inde
C’est l’espace vide dans le nom du fichier, essayez d’utiliser 'quotes'> rmdir 'New Folder' <puis le dossier dissapers ou d’utiliser des caractères d’échappement pour les caractères non visibles.
Ken Mollerup
2
Juste faire rm -r lamppva faire.
John Strood

Réponses:

878

Utilisez la commande ci-dessous:

rm -rf lampp

Il supprime tous les fichiers et dossiers contenus dans le lampprépertoire.

Si l’utilisateur n’a pas l’autorisation de supprimer le dossier:

Ajouter sudoau début de la commande:

sudo rm -rf folderName

Sinon, sans sudoautorisation, l'autorisation vous sera refusée. Et il est recommandé d’essayer de ne pas utiliser -flors de la suppression d’un répertoire:

sudo rm -r folderName

Remarque: cela suppose que vous êtes déjà au même niveau du dossier que vous souhaitez supprimer dans le terminal, si ce n'est pas le cas:

sudo rm -r /path/to/folderName

Pour votre information: vous pouvez utiliser des lettres -f, -r, -v:

  • -f = ignorer les fichiers inexistants, ne jamais demander
  • -r = supprimer les répertoires et leur contenu de manière récursive
  • -v = pour expliquer ce qui se fait
Shantanu Banerjee
la source
69
À mon humble avis, c'est une bonne pratique de ne jamais ajouter le "f" à la première tentative. Son but est d’ignorer certains messages d’avertissement qui peuvent être importants, en particulier si vous l’avez accidentellement fait dans / depuis le mauvais répertoire. À mon avis, il est bon d’essayer d’abord sans le "f", puis seulement si vous rencontrez beaucoup de messages d’avertissement et que vous êtes sûr que vous pouvez les ignorer tous, puis appuyez sur Ctrl + C et répétez la commande avec " F".
thomasrutter
@ BKSpurgeon pas, sauf si vous tapez accidentellement --no-preserve-rootaussi .
Muru
@ thomasrutter ... d'accord. Un fichier "xxx" propriétaire: racine et groupe: racine peut être supprimé avec le commutateur -f ; et sans sudo . C'est le message sans -f : " rm: supprime le fichier régulier protégé en écriture '/home/william/.cache/netbeans/v08.01/tmp/xxx'? _". _Lire doucement.
sera
95
rm -R lampp

Cependant, vous devez faire attention avec une commande récursive comme celle-ci, car il est facile de supprimer accidentellement beaucoup plus que prévu.

Il est judicieux de toujours vérifier le répertoire dans lequel vous vous trouvez et de savoir si vous avez tapé la commande correctement avant d'appuyer sur Entrée.

Version plus sûre

rm -R -i lampp

L'ajout le -irend un peu plus sûr, car il vous incitera à chaque suppression. Cependant, si vous supprimez de nombreux fichiers, cela ne sera pas très pratique. Néanmoins, vous pouvez essayer ceci en premier.

Note sur l' -f option:

Beaucoup de gens suggèrent d'utiliser -f(en le combinant -Rfou -rf), prétendant qu'il se débarrasse des invites gênantes. Cependant, dans les cas normaux vous n'avez pas besoin, et l' utiliser supprime certains problèmes que vous avez probablement ne voulez savoir. Lorsque vous l'utiliserez, vous ne serez pas averti si vos arguments fournissent un répertoire ou un fichier non existant: rm ne pourra tout simplement pas supprimer quoi que ce soit. En règle générale, essayez d'abord sans le -f: s'il y a des problèmes avec vos arguments, alors vous le remarquerez. Si vous commencez à recevoir trop d’invitations sur les fichiers sans accès en écriture, vous pouvez l’essayer avec-f. Vous pouvez également exécuter la commande à partir d'un utilisateur (ou du super-utilisateur utilisant sudo) disposant de toutes les autorisations sur les fichiers et les répertoires que vous supprimez pour éviter ces invites en premier lieu.

thomasrutter
la source
4
Remarque: les minuscules -rpeuvent également être utilisées et ont le même effet ici. J'ai tendance à n'utiliser que des majuscules -Rparce que cela correspond à d'autres commandes que j'utilise telles que grepet chmod, dont certaines ne prennent en charge que la forme majuscule.
thomasrutter
Celui-ci a fonctionné pour moi en utilisant adb (android debug bridge) sur Android. J'essayais de rm -rf mais cela ne fonctionnait pas. Dû utiliser rm -R. Merci.
Raddevus
C'est une bonne solution, surtout si vous êtes inexpérimenté avec le terminal Bash. La commande peut être raccourcie à rm -ir FOLDER.
AlainD
24

Il existe de nombreuses façons de supprimer un répertoire via le mode CLI. Cela dépend de la façon dont vous êtes à l'aise.

rm -rvf /path/to/directory  
  • -r = supprimer les répertoires et leur contenu de manière récursive
  • -v = expliquer ce qui se fait
  • -f = ignorer les fichiers non existants, ne jamais demander

Si vous êtes nouveau dans Linux, utilisez les pages de manuel de commandes ( man rm) pour plus d’options et plus de précision.

papseddy
la source
-2

J'avais quelques problèmes avec ça aujourd'hui, mais je l'ai surmonté avec sudo.

Mise en garde: assurez-vous que vous souhaitez supprimer le tout avant d'utiliser la commande ci-dessous.

$ sudo rm -R [Directory name]

J'ai réussi à le faire aujourd'hui et j'ai supprimé de nombreux répertoires non vides que je confirmais ne pas vouloir / avoir besoin.

J'utilise 14.04 LTS

Thomas
la source
4
"SUDO" n'est pas une commande - "sudo" l'est. Néanmoins, vous n’utilisez pas sudo pour supprimer un répertoire non vide, vous l’utilisez pour supprimer un fichier qui ne vous appartient pas. Cela est bien sûr dangereux et peu astucieux, car vous ne devez pas supprimer aveuglément des fichiers que vous ne possédez pas.
Marty Fried
-3

En passant, j’ai personnellement voulu supprimer un répertoire contenant un fichier protégé en écriture (s. (.Git et sous-répertoires)) et j’ai finalement réalisé que je devais aussi devenir un super utilisateur pour pouvoir supprimer correctement ces fichiers. Voici ce que j'ai fait:

#became super user
sudo su -

#deleted contents of, and then the directory, harvey_snake/
rm -R harvey_snake/
Harvey Williams
la source
4
Je ne pense pas que vous ayez besoin sudo suici. Préfixez simplement la rmcommande avec sudo. Pour des raisons de sécurité, il est recommandé (selon les défenseurs de sudo) de ne pas rester à la racine lorsque cela n’est pas nécessaire.
thomasrutter
2
Aussi, soyez très très très sûr du répertoire dans lequel vous vous trouvez sudo rm -r.
Tony Martin
Vous pouvez définir la commande root-relative ( /directory_name) de manière à éviter tout doute sur le répertoire à supprimer.
Yaakov Ainspan