72 votes

Comment supprimer tous les fichiers et sous-répertoires d'un répertoire SANS supprimer le répertoire en bash ?

Existe-t-il une commande permettant de supprimer tous les fichiers et sous-répertoires d'un répertoire ? sans en supprimant le répertoire ?

Par exemple, si j'ai le répertoire dontDeleteMe avec des sous-répertoires 1 , 2 , 3 et chaque sous-répertoire contient quelques images, comment puis-je supprimer les sous-répertoires ? 1 , 2 et 3 et tous les fichiers qui s'y trouvent, sans supprimer le répertoire parent dontDeleteMe ?

4voto

Bhavik Points 129

Vous pouvez utiliser find avec le -delete drapeau :

find dontDeleteMe/* -delete

El /* est important car il indique find pour rechercher uniquement DANS le dossier appelé "dontDeleteMe".

Assurez-vous également que le -delete se trouve à la fin de l'élément find commandement.

3voto

Tebe Points 271
rm -rf  directory/{.*,/*}

Ce qui dit :

Supprimez tous les fichiers commençant par . dans "directory" et tous les autres fichiers également.

Bien que, comme l'a gentiment noté Neftas cette solution n'est pas sûr !

La solution la plus sûre est :

 rm -rf directory/!(.|..)

2voto

ta.speot.is Points 842

Il existe une réponse encore plus simple :

  1. cd dontDeleteMe

  2. rm -rf *

Temps de cours sur l'administration du système de base : Faites attention à l'endroit où vous vous trouvez lorsque vous utilisez des commandes de balayage comme celle-ci.

Je ne le dirai jamais assez. J'ai déjà dû récupérer une boîte parce que quelqu'un n'avait pas fait attention et avait saisi rm -rf * alors que dans /.

*nix suppose que si vous êtes root ou si vous faites un sudo en tant que root, vous savez ce que vous faites. Donc, assurez-vous que vous savez ce que vous faites avant de le faire.

Une alternative qui permet de s'assurer que votre commande 'cd' fonctionne avant de lancer la commande 'rm' est d'utiliser

cd dontDeleteMe && rm -rf *

1voto

user353305 Points 11

Je ne sais pas pourquoi c'est si complexe, aidez-moi si je me trompe.

cd DoNotDeleteDir #<- this is just to make sure we are inside
find . | xargs rm -rf

C'est ça.

0voto

William Saxon Points 1
  1. La chose la plus facile pour moi, qui suis un expert de Windows mais un novice d'Ubuntu.
  2. Cliquez sur l'icône Fichiers du lanceur
  3. Naviguez jusqu'au répertoire où se trouve le fichiers et dossiers que vous voulez supprimer.
  4. Cliquez avec le bouton droit de la souris dans une zone vide de la fenêtre à côté des fichiers et cliquez sur "Ouvrir dans le terminal" - laissez la fenêtre des fichiers ouverte.
  5. Une fenêtre de terminal s'ouvrira et sera "paramétrée" sur le dossier que vous avez localisé
  6. Vous pouvez taper "dir" (ne pas tenir compte des guillemets quand je dis taper) et appuyer sur entrée pour que le terminal affiche une liste de fichiers et de dossiers - juste pour prouver que vous êtes "dans" le bon dossier.
  7. tapez "rm -rf *" et appuyez sur entrée
  8. en fonction de la taille des dossiers/fichiers à supprimer le système se met en pause
  9. Lorsque l'invite du terminal revient, la fenêtre des fichiers que vous aviez ouverte indique maintenant "Folder is Empty" (Dossier vide).
  10. J'ai eu du succès avec cette méthode et cela m'a permis de voir les fichiers/dossiers à la fois dans la fenêtre Fichiers et comme résultat de la commande Dir dans la fenêtre du terminal.
  11. J'ai également été réconforté par le fait que la fenêtre Fichiers affichait le dossier maintenant vide - d'autant plus que j'avais couru après ces fichiers à la recherche du dossier de la corbeille dans lequel ils se trouvaient.
  12. Merci à tous ceux qui ont soumis des réponses - c'était très instructif.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X