Як видалити всі файли, старші за 3 дні, коли “Список аргументів занадто довгий”?


89

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

Мені потрібно видалити всі файли та каталоги, які перевищують 3 дні.

У каталозі, який містить 37000 файлів, я зміг зробити це за допомогою:

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

Але, маючи 82000 файлів / каталогів, я отримую помилку:

/ usr / bin / find: Список аргументів задовгий

Як я можу обійти цю помилку, щоб я міг видалити всі файли / каталоги, старші за 3 дні?


1
Ви пробували find -mtime +3 -exec rm {} +?
Gilles Quenot

1
Я вважаю, що біг find * -mtime +3 |xargs rmвирішить цю проблему.
Mats Petersson

9
Я думаю, єдина проблема find *. find .краще. Обшивка оболонки розширюється *до величезного списку файлів і каталогів.
бездумний шум

@artlessnoise - це місце.
sjas

Відповіді:


120

Щоб видалити всі файли та каталоги у поточному каталозі:

find . -mtime +3 | xargs rm -Rf

Або, як варіант, більше відповідає початковій команді OP:

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

26
-1 Проблема полягає у зірці у "find *", ви вирішили це за допомогою "find". натомість. Ксарг тут вводить в оману.
Олександр Левчук

7
@AleksandrLevchuk він вирішує проблему ОП, а тому не заслуговує на голосування проти
hd1

11
Запитання: "знайти * -mtime +3 -exec rm {} \;" дає список аргументів занадто довгий. Відповідь: Використовуйте "find. -Mtime +3 -exec rm {} \;"
Олександр Левчук

2
Можливо, ви захочете додати --після rm, наприкладfind . -mtime +3 -exec rm -- {} \;
domen

8
Ніхто не сказав, для чого --це.
Проникність

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.