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

89

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

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

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

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

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

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

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

Эдвард Тангуай
источник
1
Вы пробовали find -mtime +3 -exec rm {} +?
Gilles Quenot 06
1
Я считаю, что бег find * -mtime +3 |xargs rmрешит эту проблему.
Матс Петерссон
9
Думаю проблема только в том find *. find .лучше. Подборка оболочки с расширением *до огромного списка файлов и каталогов.
бесхитростный шум
@artlessnoise на высоте.
sjas

Ответы:

120

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

find . -mtime +3 | xargs rm -Rf

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

find . -mtime +3 -exec rm -Rf -- {} \;
hd1
источник
26
-1 Проблема - звездочка в «find *», вы решили ее с помощью «find». вместо. Xargs здесь вводит в заблуждение.
Александр Левчук
7
@AleksandrLevchuk, он решает проблему OPs, и поэтому не заслуживает отрицательного голоса
hd1
11
Вопрос: "find * -mtime +3 -exec rm {} \;" дает слишком длинный список аргументов. Ответ: Используйте "find. -Mtime +3 -exec rm {} \;"
Александр Левчук
2
Вы можете добавить --после rm, напримерfind . -mtime +3 -exec rm -- {} \;
domen 04
8
Никто не сказал, для чего --это нужно.
Acumenus 08
59

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

find . -mindepth 1 -mtime +3 -delete

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

Vangheem
источник
4
Лучший ответ, намного чище, чем вызов rm (и, вероятно, безопаснее). Также работает для подкаталогов.
basic6
16

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

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

и так далее .. Кавычки блокируют подстановочные знаки оболочки, что позволяет «находить» миллионы файлов :)

62мкв
источник