Поиск последних измененных файлов/папок в Unix/Linux
Иногда, нужно найти все измененные файлы или папки в Unix/Linux ОС и в моей статье «Поиск последних измененных файлов/папок в Unix/Linux» я расскажу как это сделать.
Чтобы найти все файлы, которые были изменены с момента определенного времени (т.е. час назад, день назад, 24 часа назад и так далее) в Unix и Linux имеется команда find и она очень пригодиться для таких целей.
Чтобы найти все файлы, которые были изменены в течение последних 24 часов (последний полный день) в текущем каталоге и в его подкаталогах, используйте:
# find . -mtime -1 -print
Опция «-mtime -1» сообщает команде find искать модифицированные файлы за последние сутки (24 часа).
Опция «-print» сообщает «find» выводить файлы и их пути (где они лежат) и данную команду можно заменить на «-ls» если нужно вывести подробную информацию о файле.
Примеры:
Например нужно найти файлы, что были изменены за последние 30 минут в папке /home/captain:
# find /home/captain -type f -mmin -30
И приведу пример подобного, но для папки:
# find /home/captain -type d -mmin -30
Например нужно найти измененные файлы за 5 дней, но не включать в поиск вчерашний день (за последний день):
# find /home/captain -type f -mtime -5 ! -mtime -1
Для полного счастья, можно вывести время модификации и отсортировать по нему:
# find /home/captain -type f -mtime -5 ! -mtime -1 -printf '%TY-%Tm-%Td %TT %p\n' | sort -r
Чтобы ограничить уровень вложенности, добавьте параметр «-depth». Например, поиск с уровнем вложенности не более 3 папок:
# find /home/captain -type f -mmin -30 -depth -3
Поиск файлов в /home/captain директории (и во всех ее подпапках) которые были изменены в течение последних 60 минут, и вывести их атрибуты:
$ find/ home/captain -type f -mmin -60 -exec ls -al {} \;
В качестве альтернативы, вы можете использовать xargs команду, чтобы достичь того же:
$ find /home/captain -type f -mmin -60 | xargs ls -l
Поиск последних измененных файлов/папок в Unix/Linux завершен.