find directory -not \( -name temp -o -name 3.php -o -name c -prune \) -delete
Um caso de teste rápido mostrou que funcionou exatamente nesse caso. Se houver subdiretentes chamados, e. c
ou algo assim, acredito que você possa excluí-los também. É fácil fazê-lo funcionar em casos gerais, mas definir um comando de localização em toda generalidade requer alguns testes.
Teste sem a instrução "-delete" para ver quais arquivos correspondem.
PRESSTOP: find
altera seu comportamento quando -delete
é especificado ( find
avisa sobre isso e não funciona quando -prune
é especificado). Você sempre pode canalizar a saída para xargs
e rm
ou escrever -execdir rm {} \;
em vez de -delete
.
Exemplos:
find directory -not \( -name directory -o -name 3.php -o -name c -prune \) -execdir rm -r {} \;
find directory -not \( -name directory -o -name 3.php -o -name c -prune \) -print0 | xargs -0 rm -r
É sempre complicado, e quando o objetivo é excluir arquivos, faça testes extensos. Eu tenho alguns find
s semelhantes correndo todas as noites, e eu não posso dizer que eu não estava nervoso em liberá-los: -)