Je sais que cela supprimera tout dans un sous-répertoire et en dessous:
rm -rf <subdir-name>
Mais comment supprimer tout ce qui se trouve dans le répertoire actuel ainsi que tous les sous-répertoires en dessous et le contenu de tous ces sous-répertoires?
Réponses:
Pratiquez l'informatique en toute sécurité. Montez simplement d'un niveau dans la hiérarchie et n'utilisez pas d'expression générique:
Les deux tirets
--
indiquentrm
que ce<dir-to-remove>
n'est pas une option de ligne de commande, même si elle commence par un tiret.la source
rm ./
vous pourriez taper accidentellementrm . /
ce qui pourrait être un désastre.Supprime tous les fichiers / répertoires sous celui actuel.
Si vous voulez faire de même avec un autre répertoire dont vous avez le nom, vous pouvez simplement le nommer
Si vous souhaitez supprimer non seulement les sous-répertoires et les fichiers de celui-ci, mais également le répertoire lui-même, omettez
-mindepth 1
. Faites-le sans-delete
pour obtenir une liste des éléments qui seront supprimés.la source
-mindepth 1
si vous spécifiez un répertoire (find <name-of-directory> -mindepth 1 -delete
). Sinon Johannes a raison, il ne supprimera pas le répertoire de travail actuel (lors de l'utilisationfind -delete
).find -mindepth 1 -delete
mais j'ai euillegal option -- m
mais cela a très bien fonctionné lorsque j'ai supprimé l'option mindepthfind . -delete
Ce que je fais toujours, c'est taper
et puis appuyez sur * ESC- et bash étendra le * à une liste explicite des fichiers et répertoires dans le répertoire de travail courant.
Les avantages sont:
En fait, j'aime tellement ça que j'en ai fait le comportement par défaut pour TAB avec cette ligne en .bashrc:
la source
--
dans cette réponse? Cette approche est géniale dans l'ensemble, je dois dire.Utilisation
Mise à jour: Le
.
représente le répertoire courant, mais nous ne pouvons pas l'utiliser. La commande semble avoir des vérifications explicites pour.
et..
. Utilisez plutôt le globbing générique. Mais cela peut être risqué.Une version plus sûre de l'OMI consiste à utiliser:
(cela vous demande une confirmation avant de supprimer chaque fichier / répertoire.)
la source
Il est correct que
rm –rf .
supprimera tout dans le courant directement, y compris les sous-répertoires et leur contenu. Le point unique (.
) signifie le répertoire courant. attention à ne pas le fairerm -rf ..
car le double point (..
) signifie le répertoire précédent.Cela étant dit, si vous êtes comme moi et que plusieurs fenêtres de terminal sont ouvertes en même temps, vous feriez mieux d'être en sécurité et d'utiliser
rm -ir .
Regardons les arguments de la commande pour comprendre pourquoi.Premièrement, si vous regardez la
rm
page de manuel des commandes (man rm
sous la plupart des Unix), vous remarquez que cela–r
signifie "supprimer le contenu des répertoires de manière récursive". Donc, faire toutrm -r .
seul supprimerait tout dans le répertoire courant et tout ce qui se trouve en dessous.Dans
rm –rf .
l'ajout -f signifie "ignorer les fichiers inexistants, ne jamais demander". Cette commande supprime tous les fichiers et répertoires du répertoire actuel et ne vous invite jamais à confirmer que vous voulez vraiment le faire.-f
est particulièrement dangereux si vous exécutez la commande sous un utilisateur privilégié, car vous pouvez supprimer le contenu de n'importe quel répertoire sans avoir la possibilité de vous assurer que c'est vraiment ce que vous voulez.En revanche, dans
rm -ri .
le-i
qui remplace le-f
moyen "demander avant toute suppression". Cela signifie que vous aurez une chance de dire "oups! Ce n'est pas ce que je veux" avant que rm ne supprime tous vos fichiers.Dans mes premiers jours d'administrateur système, j'ai fait un
rm -rf /
sur un système tout en étant connecté avec tous les privilèges (root). Le résultat a été deux jours passés à restaurer le système à partir de sauvegardes. C'est pourquoi j'emploierm -ri
maintenant.la source
Que diriez-vous:
la source
Ne fais pas ça! C'est dangereux! ASSUREZ-VOUS QUE VOUS ÊTES DANS LE BON RÉPERTOIRE!
la source
assurez- vous que vous êtes dans le bon répertoire
la source
Cette solution sûre et générale la plus simple est probablement:
la source
Je pense que cette réponse est meilleure:
/unix/12593/how-to-remove-all-the-files-in-a-directory
en gros, vous montez d'un niveau, puis dites supprimer tout ce qui se trouve dans le répertoire X. De cette façon, vous spécifiez toujours quel dossier doit avoir son contenu supprimé, ce qui est plus sûr que de simplement dire «supprimer tout ici», tout en préservant le dossier d'origine, (ce que vous voulez parfois parce que vous n'êtes pas autorisé ou que vous ne voulez tout simplement pas pour modifier les autorisations existantes du dossier)
la source