Excluindo todas as pastas e arquivos abaixo dele no linux com um certo nome?

5

Eu tenho a seguinte estrutura:

/.svn
/bla/.svn
/hello/.svn
/bla/bla/bla/.svn
... etc

Eu quero excluir todas as pastas .svn. Como faço isso?

NÃO é:

rm -rf .svn

Nas janelas, você usa o gatilho / s. Como você faz isso linux?

    
por coderama 25.05.2010 / 11:46

4 respostas

11

Use o comando find:

find . -type d -name .svn -exec rm -rf {} \;

{} é o nome do arquivo, -tipo d significa diretórios.

Aviso: use o comando find e rm juntamente com cuidado!

    
por 25.05.2010 / 12:00
9
find . -depth -type d -name .svn -exec rm -rf {} \;

Diferenças para outras soluções já apresentadas:

  • sem -depth , o comando tentará recursar para o diretório .svn depois de excluí-lo, resultando em mensagens de erro.

  • sem -type d (o que limita sua pesquisa a diretórios), você também excluiria arquivos do nome dado. (Provavelmente você não terá nenhum, mas você não deve se arriscar ao fazer uma combinação de "find" e "rm".)

por 25.05.2010 / 13:18
5

Se a sua necessidade for remover diretórios .svn e não uma solução mais geral para remover diretórios com nomes específicos, considere usar svn export :

$ svn export . /tmp/new-dir

Isso criará uma cópia da área de trabalho svn no diretório atual em um novo diretório em /tmp/new-dir . Você não precisa criar o novo diretório primeiro. O Subversion cuidará disso para você.

    
por 25.05.2010 / 16:22
2
find . -name .svn -exec rm -rf {}\;

Deve funcionar para você.
Ele primeiro encontra todas as pastas nomeadas .svn Em seguida, executando rm -rf para cada pasta encontrada.

Resultado:
Não mais pastas .svn

    
por 25.05.2010 / 12:00