find - приемы поиска

find mtime

find - приемы поиска

Как найти недавно модифицированные файлы в Linux

Оригинал: How to find recently modified files on Linux

Автор: Dan Nanni

Дата публикации: 2 ноября 2012 года

Зачастую требуется найти файлы, которые были модифицированы/созданы недавно, или за какой-либо промежуток времени. Например, администратор изменял настройки системы, но забыл, где он их сохранил. Или вы хотите проверить изменялись ли, и как, ваши файлы. Если вам необходимо найти недавно измененные файлы в linux, это можно сделать с помощью команды find.

Чтобы найти недавно модифицированные файлы, отсортированные в обратном порядке то есть файл, измененный последним, будет показан первым, используется команда вида:

$ find /etc -type f -printf '%TY-%Tm-%Td %TT %p\n' | sort -r

Вышеприведенная команда сортирует файлы в /etc и поддиректориях в обратном порядке по времени их изменения, и выводит отсортированный список вместе с их расположением в файловой системе и временем последнего изменения. Если вы также хотите проверить директории, опустите опцию "-type f".

Поиск файлов, которые были модифицированы в последние 60 минут в директории /target_directory и во всех ее поддиректориях:

$ find /target_directory -type f -mmin -60

Поиск файлов, которые были модифицированы в последние 2 дня в директории /target_directory и во всех ее поддиректориях:

$ find /target_directory -type f -mtime -2

Поиск файлов, которые были модифицированы в последние 2 дня в директории /target_directory и ее поддиректориях глубиной до 3 уровня:

$ find /target_directory -type f -mtime -2 -depth -3

Вы также можете задать диапазон времени модификации. Поиск файлов, которые были модифицированы в последние 7 дней, но не позднее чем 3 дня назад:

$ find /target_directory -type f -mtime -7 ! -mtime -3

Все эти команды выводят только путь к найденным файлам. Вы можете также детализировать вывод информации с помощью опции "-exec".

Поиск файлов в директории /target_directory и во всех ее поддиректориях, которые были модифицированы в последние 60 минут и вывод атрибутов файлов:

$ find /target_directory -type f -mmin -60 -exec ls -al {} \;

В качестве альтернативы вы можете использовать для этого команду xargs:

$ find /target_directory -type f -mmin -60 | xargs ls -l

Обратите внимание, что эти команды найдут также файлы, созданные в заданный промежуток времени.

Удаление файлов старше x-дней

Вариант 1 осторожно с удалением\!: _rm надо заменть на rm

find /somewhere -type f -mtime +7 -exec _rm  -f {} \;

В cron так:

44 23 * * * /usr/bin/find /data/appdata/backups/ -type f -mtime +14 -exec rm -f {} \;

Вариант 2 осторожно с удалением\!:

find /somewhere -type f -mtime +7 -print0 | xargs -0 _rm -f

find directory-location -group {group-name} -name {file-name}