Как я могу удалить все файлы в папке, к которым не обращались в течение определенного времени?


14

Я хотел бы запустить ночное задание cron, которое удаляет все файлы в папке, к которым не было доступа в течение недели или более. Какой самый эффективный способ сделать это в bash?


2
findможет фильтровать по времени. «Правильность» atime зависит noatimeкак минимум от конфигурации (см. ).

Ответы:


20

Вы хотите findинструмент .

find folder -depth -type f -atime +7 -delete

(Это будет удалить все файлы ( только регулярные те , ни трубы, специальные устройства, каталоги, символические ссылки) в данной папке и все подкаталоги (рекурсивно) , где последний раз доступа является больше чем 7 дней назад.)


6
Возможно, вы захотите добавить -type fтуда, чтобы убедиться, что он удаляет только файлы, а не целые каталоги.
Шадур

3

Вы можете проверить, tmpwatchкакие из них можно использовать в работе cron. Не нужно кататься самостоятельно find. На RHEL это в tmpwatchRPM.


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