Remover recursivamente arquivos SVN

5

Ainda estou aprendendo o bash shell.

Eu quero recursivamente encontrar e remover arquivos svn dentro dos diretórios filhos de uma determinada pasta. Eu cometi o erro de fazer check-out em vez de apenas clonagem, então estou tentando limpar minha bagunça.

Eu tentei isso, mas só recebo a saída de todos os arquivos encontrados:

rm | find -name ".svn"

Quando executo isso, não recebo saída e os arquivos ainda estão lá: find . -executable -o ! -regex '.*\.svn' -exec rm -i {} \+

    
por chrisjlee 25.07.2011 / 19:04

3 respostas

11

O método mais fácil seria exportar a revisão desejada, em vez de fazer a verificação. Tente svn help export no bash shell.

Se você realmente quiser usar find para percorrer e remover todos os diretórios filhos chamados .svn , faça isso:

find /path/to/search -type d -iname .svn -print0 | xargs -0 rm

EDITAR

  • -type d #look apenas para diretórios
  • -iname .svn #casar correspondência insensível, provavelmente não é necessária
  • -print0 # imprime o nome completo do arquivo seguido por um caractere nulo em vez de novas linhas. permite que nomes de arquivos com espaços ou outros espaços em branco sejam passados corretamente para xargs -0
por 25.07.2011 / 19:10
3
shopt -s globstar
rm -r **/.svn
    
por 25.07.2011 / 19:37
2

A maioria das versões de find tem uma ação de exclusão:

$ find /path/in/question -type d -name .svn -delete

Certifique-se de executá-lo sem a exclusão e verifique os resultados primeiro!

    
por 25.07.2011 / 20:49