Como excluir tudo, exceto os diretórios .svn?

2

Eu tenho uma árvore de diretórios bastante complexa. Existem muitos subdiretórios, nos subdiretórios ao lado de outros arquivos e diretórios estão os diretórios ".svn".

Agora, no Linux, eu quero excluir todos os arquivos e diretórios exceto os diretórios .svn.

Eu encontrei muitas soluções sobre o comportamento oposto - excluindo todos os diretórios .svn na árvore. Alguém pode me citar a resposta correta para excluir tudo, exceto .svn?

    
por Arek 02.08.2010 / 20:55

3 respostas

6

Eu costumo usar um find relativamente simples com a opção -exec , como sempre esqueço do comando -delete. Eu também restringir a arquivos somente. Principalmente porque eu uso muita variação de find {someswitches} -exec {somecommand} - então eu lembro disso!

find . -type f -not path '*.svn*' -exec rm {} \;

    
por 03.02.2011 / 13:33
0

Experimente este rm -rf -- $(ls -la |grep -v .svn) . Ele removerá tudo (incluindo arquivos ocultos), exceto o .svn dir.

EDIT : A solução acima funciona para um diretório, não uma árvore, find . ! -name .svn -exec rm {} \; removerá todos os ARQUIVOS e não os dirs. É uma maneira segura de fazer isso, pois se você forçar os diretórios rm on, poderá excluir diretórios que tenham .svn diretórios dentro.

    
por 02.08.2010 / 20:59
0

Não testado: find . -not -path '*.svn*' ... se esses forem todos os arquivos que você deseja remover, execute-o novamente com a opção -delete .

    
por 03.08.2010 / 05:49