Por que esse comando excluiu tudo?

Por que esse comando excluiu tudo?

Eu executo este comando em uma caixa Unix:

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

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

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

Acho que o motivo é que usei nameem vez de -name. Acabei de reexecutá-lo como

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

E parece funcionar bem. O que exatamente acontece se namefor usado em oposição a -name?

Responder1

Você está perdendo o traço antes -name, por isso estava procurandocaminhosnomeado .e name, CVSonde o ponto faz referência à pasta atual, excluindo tudo.

O utilitário find desce recursivamente na árvore de diretórios para cada caminho listado.

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

encontrar . nome CVS -exec echo rm -fr {} \;

informação relacionada