Поиск недавно измененных файлов – полезный параметр при устранении неполадок в коде или на сервере.
Также данный функционал может быть полезен в форензике или расследовании инцидента.
Какие файлы логов были изменены?
Какие файлы изменились, когда я выполнил эту команду?
Универсальная команда find может помочь вам получить ответы.
Команда, показанная ниже найдет все файлы, которые были изменены за последние пять минут в текущем каталоге.
find . -type f -mmin -5
Это только один пример.
Позвольте мне рассказать, как можно подробно перечислить файлы, к которым обращались и которые были созданы за последние n минут/дней.
Как найти последние измененные файлы на Linux
Прежде чем перейти к объяснительной части, сначала я хотел бы поделиться синтаксисом того, как вы можете использовать команду find для поиска файлов, которые были изменены за последние n минут.
find [path] -type f -mmin n
Здесь n указывает, сколько минут вы хотите проверить.
Но у вас также есть некоторые опции, такие как:
-n будет проверять файлы, измененные менее чем за n минут.
+n будет проверять файлы, измененные более чем за n минут
n будет проверять файлы, измененные ровно n минут назад
Аналогично, вы можете использовать -mtime вместо -mmin для проверки файлов, измененных несколько дней назад.
Поиск файлов, измененных за последние 5 минут
Предположим, я хочу найти в списке файлы, которые были изменены за последние 5 минут в каталоге var; моя команда будет выглядеть следующим образом:
find .var/ -type f -mmin -5
Как вы можете увидеть, вывод просто показывает файлы, и я не нахожу данный список полезным и читабельным.
В этом случае я добавлю -ls, чтобы получить более приятный вид и больше информации, такой как владелец файла, разрешения и время модификации.
find .var/ -type f -mmin -5 -ls
Команда find позволяет выполнять несколько действий с результатом.
Одним из таких действий является -ls.
Для команды ls не обязательно использовать find-exac или xargs.
Поиск файлов, измененных за последние n дней
Чтобы найти измененные файлы за последние n дней вместо n минут, нужно просто использовать -mtime вместо -mmin.
Предположим, я хочу найти файлы, которые были изменены за последние сутки, моя команда будет следующей:
find /media/sagar/HDD/Downloads -type f -mtime -1 -ls
Поиск файлов старше X дней
Вы можете использовать параметр mtime для поиска старых файлов, которые не были изменены в последнее время.
Допустим, вы хотите найти файлы старше 30 дней в текущем каталоге.
Используйте эту команду:
find . -mtime +30
Как найти измененные каталоги за последние n минут или дней
Команда find также может вывести список измененных каталогов.
Просто замените -type f на -type d, что позволит вам искать не файлы, а каталоги.
Для демонстрации я покажу, как вы можете получить список измененных каталогов в каталоге /.cache/mozilla/firefox:
find .cache/mozilla/firefox/ -type d -mmin -5 -ls
Точно так же можно найти каталоги, над которыми вы работали несколько дней назад.
find Downloads/ -type d -mtime -1 -ls
Поиск файлов, к которым недавно обращались или которые были созданы
Как же найти файлы, к которым обращались или которые были созданы за последние n минут?
Чтобы найти файлы, к которым обращались в течение последних n минут, вам придется использовать -amin вместо -mmin.
Чтобы найти файлы, к которым обращались в течение последних 5 минут внутри моей предпочтительной директории, я бы использовал приведенную команду:
find /media/sagar/HDD/Downloads -type f -amin -5 -ls
Таким же образом можно найти файлы, созданные за последние n минут, используя -cmin вместо -amin.
find /media/sagar/HDD/Downloads -type f -cmin -5 -ls
Заключение
В принципе, возможности использования не ограничены.
Вы можете изменить его с -n на +n, и вы сможете искать более старые файлы.
Используйте ctime, и вы сможете получить недавно созданные или древние файлы.
Изучение основ позволит вам использовать команду find в соответствии с вашими потребностями.