O comando 'find' exclui tudo em um diretório, exceto para pastas CVS?

1

Eu tenho um dir:

$ tree
.
|-- CVS
|   |-- Entries
|   |-- Entries.Log
|   |-- Repository
|   '-- Root
|-- dirA
|   |-- CVS
|   |   |-- Entries
|   |   |-- Repository
|   |   '-- Root
|   |-- file1
|   '-- file2
|-- dirB
|   |-- CVS
|   |   |-- Entries
|   |   |-- Repository
|   |   '-- Root
|   |-- file3
|   '-- file4
|-- file5
'-- file6

Eu posso encontrar todos os arquivos que eu quero excluir com este comando:

$ find . -name CVS -prune -o -type f -print

Mas se eu alterar -print para -delete

$ find . -name CVS -prune -o -type f -delete

Tudo desapareceu. Por quê?

    
por kev 03.04.2012 / 07:53

1 resposta

3

Veja as páginas man de find , em -delete :

When testing a find command line that you later intend to use with -delete, you should explicitly specify -depth in order to avoid later surprises. Because -delete implies -depth, you cannot usefully use -prune and -delete together.

Você pode muito provavelmente usar -exec rm {} + em vez de -delete neste contexto para fazer o que quiser, mas como sempre ao jogar com fogo: faça muito certeza de que funciona antes de entrar difícil.

    
por 03.04.2012 / 08:55

Tags