Как удалить все файлы старше 3 дней, когда "Список аргументов слишком длинный"?

У меня есть каталог файлов журналов, в котором содержится 82000 файлов и каталогов (около половины и половины).

Мне нужно удалить все файлы и каталоги, которые старше 3 дней.

В каталоге, в котором содержится 37000 файлов, я смог сделать это с помощью

find * -mtime +3 -exec rm {} \;

Но с 82000 файлами/каталогами я получаю сообщение об ошибке:

/usr/bin/find: слишком длинный список аргументов

Как обойти эту ошибку, чтобы удалить все файлы/каталоги, которые старше 3 дней?

Ответ 1

Чтобы удалить все файлы и каталоги в текущем каталоге:

find . -mtime +3 | xargs rm -Rf

Или, альтернативно, больше в соответствии с исходной командой OP:

find . -mtime +3 -exec rm -Rf -- {} \;

Ответ 2

Можно также использовать:

find . -mindepth 1 -mtime +3 -delete

Не удалять целевой каталог

Ответ 3

Другое решение для исходного вопроса, особенно. полезно, если вы хотите удалить только НЕКОТОРЫЕ из старых файлов в папке, будет выглядеть так:

find . -name "*.sess" -mtime +100 

и т.д. Кодирует групповые шаблоны оболочки, что позволяет вам "найти" миллионы файлов:)