Альтернативы длительной команде `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 раза быстрее