Linux & SVN: Como remover todos os arquivos com versão, mas manter a estrutura de diretórios, ignorar as diretivas .svn?

9

Desejo remover todos os arquivos com versão do meu repositório, mas MANTENHA a estrutura de diretórios com versão. Obviamente, eu quero deixar todos os diretórios .svn intocados.

Em outras palavras, quero esvaziar completamente a estrutura de diretórios de uma cópia de trabalho SEM prejudicar a própria estrutura de diretórios.

Por exemplo, removendo os arquivos dessa estrutura:

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

Deve resultar em:

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

Eu estou procurando por algum tipo de comando find ou algo para fazer isso, e estou tendo problemas para construir o comando. Obrigado pela ajuda!

    
por Brian Lacy 26.10.2010 / 20:28

2 respostas

10
find dir/ -path '*/.svn' -prune -o -type f -print

deve caber na conta (a maior parte vem da página de manual do find para -path ). Pipe-lo para menos e confira. O que ele faz é primeiro encontrar (o caminho termina em .svn e não recorre a (remover) esse diretório) ou (se for um arquivo, imprima-o).

Se estiver bom, mude para

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

A versão + cola todos os arquivos juntos em um comando rm. Se você é paranóico, mantenha um backup da árvore ( cp -a dir/ otherdir/ ) primeiro.

    
por 26.10.2010 / 21:20
2
find . -not -path "*/.svn/*" -and -type f -and -exec /bin/rm '{}' \;

Devem fazer o truque.

    
por 26.10.2010 / 21:24