elimine todas as pastas .svn de uma pasta raiz para todas as suas subpastas

2

Eu tenho uma pasta com uma solução .SVN.

Eu quero percorrer todo o diretório e seus subdiretórios e excluir a pasta .svn.

Eu tenho bash instalado, então eu posso usar o grep se precisar.

    
por user2659 09.12.2009 / 16:44

4 respostas

7

find <path> -type d -name '.svn' -exec rm -rf {} \+

Localiza todos os diretórios do nome '.svn' e os exclui recursivamente.

Eu seria realmente cauteloso ao fazer isso se você não possui o diretório de checkout e não entende por que esses diretórios estão presentes. Observe também a resposta de roe sobre svn export .

    
por 09.12.2009 / 17:00
6

no bash:

removesvn() {
  cd $1
  for f in */.svn; do
    [ -d "$f" ] && removesvn ${f%/.svn}
  done
  [ -d "$f" ] && rm -rf .svn
}

removesvn .

deve navegar por todas as pastas que contenham uma pasta .svn e removê-la.

No entanto, é melhor você usar o svn para exportar ( svn export eu acredito) uma árvore baunilha sem informações de versão, que é provavelmente o que você está procurando.

EDITAR
Observe que o script bash acima apenas remove pastas .svn que estão conectadas ao original (ou seja, ele não removerá a / b / c / .svn se b não contiver um .svn). Se você quer apenas limpar o arquivo .svn em seu sistema de arquivos, o find provavelmente fará um trabalho melhor.

    
por 09.12.2009 / 16:54
4

Você pode combinar find e rm com xargs para localizar e remover todos os subdiretórios .svn de um diretório raiz.

Primeiro, teste o comando find para verificar se ele encontra os subdiretórios corretos,

find . -name ".svn"

Isso deve exibir uma lista de todos os subdiretórios .svn no diretório de trabalho atual ( . ). Certifique-se de que esses são realmente os diretórios que você deseja remover. Em seguida, execute o seguinte comando para removê-los (observação: isso não pode ser desfeito),

find . -name ".svn" | xargs rm -vrf

Veja man rm e man find para obter uma explicação das opções.

    
por 18.06.2011 / 16:35
1

Eu usei essa técnica:

find [path] -name .svn -print0 | xargs -0 rm -R

Funcionou muito bem para mim.

    
por 06.01.2013 / 04:08

Tags