Как удалить все файлы старше 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 -- {} \;

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

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


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

16

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.