29 votes

Ligne de commande pour supprimer récursivement les fichiers et répertoires correspondants

Comment supprimer récursivement tous les fichiers et répertoires correspondant à un certain modèle? par exemple supprimer tous les répertoires ".svn" et les fichiers qu'ils contiennent?

(Malheureusement, DOS uniquement)

56voto

JMD Points 4784

Puisque vous êtes à la recherche d'un DOS de solution, la semaine dernière, la poste a été presque identiques et que le consensus était:

Outil de ligne de commande pour supprimer un dossier avec un nom spécifié de façon récursive dans Windows?

pour /d /r . %d dans (.svn) do @si existe "%d", rd /s/q "%d"

ou

for /f "usebackq" %d ("dir .svn /ad/b/s") ne rd /s/q "%d"

En fait, SVN vous donne également la possibilité d'exporter un répertoire de travail sans l' .svn/_svn répertoires.

Après-coups, trois ans plus tard: Je pense que la raison pour laquelle les gens finissent par avoir besoin de supprimer de manière récursive l' .svn/_svn dossiers est parce qu'ils ont directement copié leur copie de travail locale vers un nouvel emplacement dans le but de faire un dossier de comparaison de leur version modifiée par rapport à un nettoyage à l'exportation, c'est à dire après quelque chose va de travers avec de la modification de la copie de travail locale. (Au moins, c'est pourquoi j'en ai eu besoin. Il est certainement plus facile/rapide à utiliser juste 'svn export" lorsque c'est possible.)

18voto

Antti Huima Points 15465

Est-ce Unix ou Windows? Sous Unix, une solution simple est

 find . -name '.svn' -type d | xargs rm -rf
 

Cela recherche récursivement tous les répertoires (-type d) de la hiérarchie commençant par "." (répertoire courant), et trouve ceux dont le nom est '.svn'; la liste des répertoires trouvés est ensuite envoyée à rm -rf pour suppression.

Si vous voulez l'essayer, essayez

 find . -name '.svn' -type d | xargs echo
 

Cela devrait vous fournir une liste de tous les répertoires qui seraient supprimés récursivement.

6voto

dreeves Points 9130

Quelque chose comme ça peut faire l'affaire, mais bien sûr, soyez prudent!

 find . -name ".svn" -exec rm -rf {} \;
 

Essayez d'abord quelque chose comme ça pour faire un essai à sec:

 find . -name ".*" -exec echo {} \;
 

Notez que les accolades vides sont remplies avec les noms de fichier et le point-virgule échappé termine la commande qui est exécutée (en commençant après le "-exec").

5voto

greyfade Points 14358

Sur * nix ou Cygwin:

 find -name .svn -print0 | xargs -0 rm -rf
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X