Что делать, если я хочу удалить файлы / папки, к которым в Unix в течение нескольких дней не было доступа? Допустим, есть файлы, к которым последний раз доступ осуществлялся 5 дней назад в определенном месте. Я хочу их удалить. Какая для этого нужна команда оболочки?
В найти команду это то, что вам нужно, с его параметрами -atime и, возможно, -daystart.
Начните с этого, чтобы убедиться, что он нашел то, что вам нужно (и ничего лишнего!):
find directory -atime +5 -daystart -ls
Затем, когда вы будете счастливы, заставьте его делать настоящую работу:
find directory -atime +5 -daystart -exec rm {} \;
Пока find
является портативным и будет работать с различными операционными системами, -daystart -ls
не является POSIX. Если вы знаете, что используете GNU findutils, можете также использовать -delete
вместо этого и пропустите обстрел rm
.
Или рассмотрите возможность установки и использования tmpwatch
. Вы можете указать любое или все время доступа, время модификации или время изменения inode, и, если указано несколько, оценивается более старый. Кроме того, есть проверки безопасности, поэтому он не собирается сбегать из данного дерева.
Пробный прогон списка файлов.
tmpwatch --verbose --test --atime 5d /tmp
Собственно удаление.
tmpwatch --verbose --atime 5d /tmp