Як видалити файли в Linux старше 1 року? [дублікат]


9

Можливий дублікат:
Як видалити файли, що перевищують певну дату в Linux

Як видалити всі файли з поточного каталогу та його підкаталогів старше одного року?


1
Зробіть man find. Бум.

1
Зауважте близьким: це інше питання насправді незрозуміло незрозуміле, його відповіді не дуже зручні для перенесення.
Жил "ТАК - перестань бути злим"

Відповіді:


15
find /the/dir/to/start/in -type f -mtime +365 -ls -exec rm -f -- {} \;

2
find /path/to/files -type f -mtime +365 -deleteбуло б простіше.
Chris S

-delete не в моїй знахідці, тому я не звик його використовувати. Я радий, що його реалізують в інших бінарних файлах пошуку.
bot403

find … -exec rm -f {} +буде трохи швидше (і це портативно, крім стародавніх систем).
Жил 'ТАК - перестань бути злим'

1
Крім того, це хороша ідея використовувати, --якщо ім'я першого файлу починається з -(хоча ви можете гарантувати, що цього не буде, якщо каталог, який передається find, не починається з а -).
Жил "ТАК - перестань бути злим"

Це вкрай небезпечно, оскільки ви не бачите, що збираєтесь видалити, і чому в світі ви змушуєте видаляти за допомогою -f? Деякі файли захищені з причини. Набагато безпечніше зберігати результати пошуку у файлі, потім вивчити їх та запустити rm на вміст файлу.
Петро

2

Якщо ви видаляєте безліч файлів, це, як правило, набагато швидше, ніж "-exec" або перехід на "xargs":

find . -type f -mtime +365 | perl -lne unlink
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.