Если ваш find
поддерживает действие -delete
, вы обнаружите это так быстро, как только сможете, не запуская несколько процессов удаления:
find "$DIRECTORY" -name "*.$FILETYPE" -type f -mtime +"$DELETE_OLDER_THAN" \
-delete -print >> "$REMOVAL_LOGFILE" 2>&1
Вы обнаружите, что -exec rm {} \;
работает медленно, потому что создает новый процесс для каждой операции удаления. Если он есть у вашего find
,-exec rm {} +
будет быстрее, потому что будет создан один rm
процесс для значительного числа файлов. Но самым быстрым из всех однопоточных -решений будет -delete
.
С несколько большей сложностью вы можете разветвить один find.. -delete
процесс на каталог в дереве каталогов и (по крайней мере некоторые из )работающих параллельно. Но я не знаю, сколько каталогов вы обрабатываете, поэтому я не могу определить, будет ли это чистой прибылью.
Обычно это указывает на то, что ваша программа тратит значительное количество времени на ожидание обработки своего вывода. Ожидание ввода-вывода считается отдельно от использования ЦП. Перенаправляя его вывод на /dev/null
, вы устраняете это, и ваша программа тратит больше времени на работу.