Поиск по метке времени файла
Файловые системы Unix / Linux имеют три типа отметок времени для каждого файла. Они заключаются в следующем:
- Время доступа (-atime): отметка времени последнего обращения к файлу.
- Время изменения (-mtime): отметка времени последнего изменения файла.
- Время изменения (-ctime): отметка времени последнего изменения метаданных для файла (например, прав доступа или владельца).
Поиск и удаление файла старше 7 дней
Давайте рассмотрим пример, в котором мы найдем и удалим файл старше 7 дней.
Для этого мы будем использовать опцию «-mtime» команды find.
# find /path_to_directory -mtime +7 -type f -exec ls {}\;
2. Если имена файлов начинаются с какого-либо конкретного шаблона, отфильтруйте его следующим образом:
# find /path_to_directory -name 'filenamepattern*' -mtime +7 -type f -exec ls {}\;
3. После проверки и подтверждения вывода, перейдите к скрипту удаления (это очень важно), в противном случае произойдет безвозвратная потеря данных.
# find /path_to_directory -name 'filenamepattern*' -mtime +7 -type f -exec rm -fv {}\;
4. Если это необходимо сделать на удаленном сервере через задание cron и зарегистрировать имена удаленных файлов, используйте следующую команду
# ssh user@remote_ip "find /path_to_directory -name 'filenamepattern*' -mtime +7 -type f -exec rm -fv {} \; >> /tmp/backup_deletion`date +%Y%m%d`.log 2>&1"
Заключение
Параметр -mtime будет искать файлы по времени модификации; время поиска в зависимости от времени изменения.
Время использования -atime, -mtime и -ctime измеряется в днях.
Команда find также поддерживает параметры, измеряемые в минутах.
Опции:
-амин (время доступа)
-mmin (время модификации)
-cmin (изменить время)
Например, чтобы вывести все файлы со временем доступа более семи минут, используйте следующую команду:
# find . -type f -amin +7 -print
Опция -newer
Опция -newer указывает эталонный файл со временем модификации, который будет использоваться для выбора файлов, измененных раньше, чем эталонный файл.
Найдите все файлы, которые были изменены совсем раньше, чем файл file.txt:
# find . -type f -newer file.txt -print