Por que esse comando deletou tudo?

4

Eu corro este comando em uma caixa do Unix:

find . name CVS -exec rm -fr {} \;

Eu queria excluir qualquer arquivo chamado CVS em qualquer diretório do diretório atual e ele excluiu tudo.

Felizmente, tudo o que tive que fazer para me recuperar foi verificar novamente no CVS. Imagine se eu especificasse / como o diretório inicial!

Acho que o motivo é que usei name em vez de -name . Eu apenas re-executei como

find . -name CVS -exec rm -fr {} \;

E parece que funciona bem. O que exatamente acontece se name for usado em vez de -name ?

    
por ziggy 30.10.2010 / 14:17

1 resposta

7

Você está perdendo o traço antes de -name , por isso estava procurando caminhos chamados . , name e CVS , onde o ponto faz referência à pasta atual, portanto, excluindo tudo.

The find utility recursively descends the directory tree for each path listed.

Você pode testar facilmente usando echo antes do comando que deseja executar:

find . name CVS -exec echo rm -fr {} \;
    
por 30.10.2010 / 14:19

Tags