9 votes

Linux & SVN : Comment supprimer tous les fichiers versionnés mais GARDER la structure du répertoire, ignorer les répertoires .svn ?

Je veux supprimer tous les fichiers versionnés de mon référentiel, mais GARDER la structure de répertoire versionnée. Évidemment, je veux laisser tous les répertoires .svn intacts.

En d'autres termes, je veux vider complètement la structure de répertoires d'une copie de travail SANS endommager la structure de répertoires elle-même.

Par exemple, en supprimant les fichiers de cette structure :

dir/
    .svn/
        [files]
    svsubdir1/
        file1
        .svn/
            [files]
    subdir2/
        file2
        file3
        file4
        .svn/
            [files]
        subsubdir1/
            file5
            .svn/
                [files]

Devrait aboutir :

dir/
    .svn/
        [files]
    svsubdir1/
        .svn/
            [files]
    subdir2/
        .svn/
            [files]
        subsubdir1/
            .svn/
                [files]

Je cherche une sorte de find ou quelque chose pour accomplir ceci, et j'ai du mal à construire la commande. Merci pour votre aide !

10voto

Amy Anuszewski Points 1228
find dir/ -path '*/.svn' -prune -o -type f -print

devrait faire l'affaire (il provient principalement de la page de manuel find pour -path ). Mettez-le à moins et vérifiez-le. Ce qu'il fait est d'abord de trouver (path ends in .svn and don't recurse into (prune) this directory) ou (si c'est un fichier, l'imprimer).

Si cela semble bon, changez-le en

find dir/ -path '*/.svn' -prune -o -type f -exec rm {} +

La version + regroupe tous les fichiers en une seule commande rm. Si vous êtes paranoïaque, gardez une sauvegarde de l'arbre ( cp -a dir/ otherdir/ ) d'abord.

2voto

caolan Points 1
find . -not -path "\*/.svn/\*" -and -type f -and -exec /bin/rm '{}' \\;

Ça devrait faire l'affaire.

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