Альтернативы длительной команде `find` в unix

Я хочу удалить файлы старше 7 дней, и я использую эту команду для этого:

find /directory -mtime +7 -exec rm -f {} \;

Он работает нормально, но это занимает слишком много времени. Есть ли другой способ удалить файлы старше 7 дней, например, без использования find?

2 ответа

Решение

Известно, что использование -exec rm замедляет работу. Если твой find имеет параметр -delete, затем попробуйте использовать его, например, так:

find /directory -type f -mtime +7 -delete

Если твой find не имеет опции -delete, тогда рассмотрите возможность использования GNU find (которое может быть уже доступно в вашей системе как gfind).

Есть и другие возможности, например, использование xargs, Для дальнейшего обсуждения и некоторых других опций см. Удаление файлов.

Изменить финал ; для знака плюс +

$ find /directory -type f -mtime +7 -exec rm -f {} \+

или использовать xargs команда:

$ find /directory -type f -mtime +7 | xargs rm

Оба будут как минимум в 3 раза быстрее

Другие вопросы по тегам