Видалення файлів за віком


16

Чи є команда видалити всі файли в каталозі, які не були змінені за N днів? Мені потрібно прибрати кілька старих колод.

Відповіді:


24

Це видалить усі файли старше 5 днів, ви можете також ввести -name '*log'туди, щоб бути більш точним, і ви також можете вказати maxdepthкоманду find.

find /some/dir -type f -mtime +5 -delete


5
Хоча мудрі сисадміни роблять сухий запуск, -lsзамість того, -deleteщоб переконатися, що це не видалить все, що вони хотіли зберегти. Так, кажучи з досвіду тут.
Шадур

2
Виступаючи з досвіду, вони також перевіряють свій шлях. чи ні, оскільки я колись робив / some/dir/версію. :(
Геннес

3

За допомогою zshта (.m+n) глобальних класифікаторів : .вибирає лише звичайні файли, m+nвибирає файли, змінені більше n днів тому;
наприклад, перерахуйте файли в поточному каталозі, які були змінені більше 9 днів тому:

print -rl -- *(.m+9)

додати Dдля включення точкових файлів:

print -rl -- *(D.m+9)

або якщо ви хочете повторити (і перелічити, наприклад, лише файли, що закінчуються .log):

setopt extendedglob
print -rl -- **/*.log(.m+9)

замінити print -rlз , rmякщо ви задоволені результатом; хоча вам, можливо, доведеться використовувати, zargsякщо у вас є багато файлів (щоб уникнути занадто довгого списку аргументів ):

autoload zargs
zargs ./**/*(.m+9) -- rm
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.