Como NÃO excluir arquivos com o comando find

Eu queria excluir alguns arquivos Python .pyc. Primeiro, procurei por eles. (Eu sempre quero ver o que estou destruindo antes de fazer isso.)

find . -name *.pyc

Ele retornou cerca de uma dúzia de arquivos pyc. Agora, para excluir.

findtem a -deleteopção de deletar tudo o que encontrar. Então, eu rapidamente coloquei isso no comando anterior:

# DON'T DO THIS
find
. -delete -name *.pyc

Depois fui continuar meu trabalho. Mas tudo se foi. Eu havia excluído a árvore inteira!

Eu deveria colocar -delete depois de -name :

# the right way to delete what it finds
find
. -name *.pyc -delete

Este foi um lembrete doloroso que findsimplesmente executa as expressões passadas a ele na ordem da esquerda para a direita enquanto aplica quaisquer operadores dados, como e / ou / não. (Veja OPERATORSno man find.)

Quando eu tinha o direito após o caminho, estava basicamente dizendo para atravessar a árvore, excluir cada item à medida que os encontrasse e, em seguida, combiná-lo com o nome fornecido (o que não acontece porque foi excluído).-deletefind