Ligne de commande pour supprimer l'appariement des fichiers et des répertoires de manière récursive
Comment puis-je supprimer de manière récursive tous les fichiers & répertoires qui correspondent à un certain modèle? par exemple, supprimer tous les ".svn" répertoires et les fichiers qu'ils contiennent?
(Malheureusement DOS uniquement)
Vous devez vous connecter pour publier un commentaire.
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?
ou
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.)
svn export
) et pas seulement sur TortoiseSVN, de sorte que n'importe quel autre client peut le faire aussi.Est cette Unix ou Windows? Sur Unix, une solution simple est
Cette recherche récursivement tous les répertoires (de type d) dans la hiérarchie qui commence à "." (répertoire courant), et trouve ceux dont le nom est '.svn'; la liste des répertoires est ensuite amené à rm-rf pour le retrait.
Si vous voulez l'essayer, essayer
Il doit vous fournir une liste de tous les répertoires qui serait être supprimés de manière récursive.
rm
+xargs
+find
. Vous devez vous toujours l'utilisation-print0
etNUL
résiliation en général dans des situations comme celles-ci, sinon, c'est un désastre.NULL
octet et une barre oblique en eux. Les espaces sont nocifs chose pour cela, un exemple avec un espace de caractère dans le nom serait d'avoir un dir nomméfoo bar
quelque part dans la hiérarchie et un dir nommébar
dans le répertoire actuel. Ensuite vous cherchezfoo*
, il se nourritsome/path/foo bar
àrm
, qui échoue silencieusement pour la première et supprimebar
. Voir greyfade la réponse ci-dessous ou utilisez-delete
pour GNU trouver.-print0
ou-0
drapeaux de la moyenne et de l'avoir du mal à trouver de la documentation. sur un Mac, pour beaucoup (la plupart?) les fichiers/répertoires de l'espace de caractères en eux, de sorte que votre commentaire a piqué ma curiosité. #funwithunixfind . -name '.svn' -type d -exec rm -rf '{}' +
cryptique que cela puisse être, il fonctionne...rm
est juste la plus évidente mauvaise. Dans ce cas, quand il y a un espace, c'est la même que l'exécution derm -rf foo/bar baz
-- une fois que vous écrivez, c'est évident. Depuis Darwin (Mac) est techniquement un Unix, vous devriez être en mesure de trouver de la documentation sur votrefind
dans leman
, typeman find
dans un shell. P. S. Votre cas, probablement actes drôle si il y a une apostrophe dans le nom de fichier. 🙂Si vos fichiers sont dans subversion, puis de faire une exportation à partir du référentiel de vous donner une arborescence de répertoires avec la .fichiers svn et tout les autres trucs supprimés.
Quelque chose comme cela peut faire l'affaire, mais bien sûr, être prudent avec elle!
Essayer quelque chose comme cela d'abord de faire un essai:
Remarque que le vide d'obtenir des accolades rempli avec les noms de fichier et les échappa point-virgule qui termine la commande qui est exécutée (départ après le "-exec").
Sur *nix ou Cygwin:
find
+rm
ici.Si vous voulez le copier sans l'exportation et l'élimination de l' .svn de projets, vous shold utiliser l'option /EXCLUDE de XCOPY.
Comme ceci:
Observer le "\" (barre oblique inverse) sur le [path_to]. Il détermine que c'est un répertoire de sortie, de sorte que, xcopy ne remet pas en question si c'est un fichier ou un répertoire.
Le svn.excludelist est un fichier texte contenant les motifs de l'ignorer lors de la copie séparés par une ligne.
Par Exemple:
Et ainsi de suite...