Você pode usar -not
:
find . -maxdepth 1 -type f -name '*.sh' -not -name cron.sh -delete
Além disso, o GNU find
tem a opção -delete
, que é mais simples de usar e que rm -rf
.
Importante : coloque sempre -delete
no final. Conforme explicado em man find
:
Avisos: Não esqueça que a linha de comando de localização é avaliada como uma expressão, então colocar-apague primeiro fará com que a tentativa tente exclua tudo abaixo dos pontos iniciais que você especificou.
Como alternativa, você pode usar um loop de shell (mas não, o comando find
acima é muito mais eficiente):
for f in *.sh; do [ "$f" = "cron.sh" ] || rm "$f"; done