Удаления файлов в каталоге от и до определенной даты
В одном из каталогов возникла необходимость удаления всех файлов от и до определенной даты, например от 1 января 2009 до 1 Января 2012 года.
Так понимаю, есть много решений данной задачи, я же воспользуюсь возможностями утилиты find.
Итак, в наличии каталог /test. В него набросал файлов с разными датами создания. А команда для сравнения и удаления будет иметь такой формат:
find -type f ( -newermt "1 Jan 2009" -and -not -newermt "1 Jan 2012" ) -delete
После запуска имеем в каталоге /test файлы состоянием до 1 января 2009 и от 1 января 2012 года и позже.
Удаление файлов старше N дней
Из Википедии
find /dir/ -atime +N | xargs rm -f
или
find /dir/ -atime +N -delete
или
find /dir/ -name "*.jpg" -mtime +N -exec rm -f {} ;
Ключи:
-name — искать по имени файла, при использовании подстановочных образцов параметр заключается в кавычки.
-type — тип искомого: f=файл, d=каталог, l=ссылка (link).
-user — владелец: имя пользователя или UID.
-group — владелец: группа пользователя или GID.
-perm — указываются права доступа.
-size — размер: указывается в 512-байтных блоках или байтах (признак байтов — символ «c» за числом).
-atime — время последнего обращения к файлу.
-ctime — время последнего изменения владельца или прав доступа к файлу.
-mtime — время последнего изменения файла.
-newer другой_файл — искать файлы созданные позже, чем другой_файл.
-delete — удалять найденные файлы.
-ls — генерирует вывод как команда ls -dgils.
-print — показывает на экране найденные файлы.
-exec command {} ; — выполняет над найденным файлом указанную команду; обратите внимание на синтаксис.
-ok — перед выполнением команды указанной в -exec, выдаёт запрос.
-depth — начинать поиск с самых глубоких уровней вложенности, а не с корня каталога.
-prune — используется, когда вы хотите исключить из поиска определённые каталоги.
N — количество дней.