Se o seu find
suportar a ação -delete
, você encontrará isso o mais rápido possível sem gerar vários processos de exclusão:
find "$DIRECTORY" -name "*.$FILETYPE" -type f -mtime +"$DELETE_OLDER_THAN" \
-delete -print >> "$REMOVAL_LOGFILE" 2>&1
Você verá que -exec rm {} \;
é lento porque cria um novo processo para cada operação de exclusão. Se seu find
o tiver, -exec rm {} +
seria mais rápido porque criaria um processo rm
para um número considerável de arquivos. Mas o mais rápido de todas as soluções single-threaded seria -delete
.
Com um pouco mais de complexidade, você poderia distribuir um find .. -delete
process por diretório, em uma árvore de diretórios, e ter (pelo menos alguns) executados em paralelo. Mas eu não sei quantos diretórios você está processando, então não posso determinar se isso seria um ganho líquido.