Найдите файлы, которые были изменены за последние 24 часа

265

Например, сервер MySQL работает на моей машине с Ubuntu. Некоторые данные были изменены в течение последних 24 часов.

Какие (Linux) скрипты могут найти файлы, которые были изменены за последние 24 часа?

Пожалуйста, перечислите имена файлов, размеры файлов и время изменения.

JackWM
источник
1
Вы можете использовать stackoverflow.com/questions/4561895/...
vaugham

Ответы:

479

Чтобы найти все файлы, измененные за последние 24 часа (последний полный день), в определенном конкретном каталоге и его подкаталогах:

find /directory_path -mtime -1 -ls

Должно быть вам по вкусу

-, Прежде чем 1важно - это означает , что что - то изменилось в один день или меньше назад. +, Прежде чем 1бы вместо того, чтобы означать что - нибудь изменилось , по крайней мере один день назад, при этом не имея ничего до того , как 1означало бы он был изменен взыскивал один день назад, не больше, не меньше.

Xavjer
источник
17
отлично! как насчет последних 2 часов?
JackWM
114
используйте «-mmin -120» вместо mtime
Xavjer
1
почему -перед числовым значением?
EsseTi
6
Аргумент -mtime интерпретируется как количество целых дней в возрасте файла. -mtime + n означает строго больше, чем -mtime -n означает строго меньше, чем.
Ксавьер
3
Читателю: не забудьте удалить -lsпри использовании в сценарии
redolent
41

Вы можете сделать это с

find . -mtime 0

От man find:

Время, прошедшее с момента последнего изменения каждого файла, делится на 24 часа, а все оставшиеся значения отбрасываются. Это означает, что для соответствия -mtime 0 файл должен иметь модификацию в прошлом, которая произошла менее 24 часов назад.

Майкл
источник
25

Другой, более гуманный способ:

find /<directory> -newermt "-24 hours" -ls

или:

find /<directory> -newermt "1 day ago" -ls

или:

find /<directory> -newermt "yesterday" -ls
Максим Егорушкин
источник
11

В GNU-совместимых системах (например, Linux):

find . -mtime 0 -printf '%T+\t%s\t%p\n' 2>/dev/null | sort -r | more

В этом списке будут перечислены файлы и каталоги, которые были изменены за последние 24 часа ( -mtime 0). Он перечислит их с последним измененным временем в формате, который можно сортировать и читать для человека ( %T+), за которым следует размер файла ( %s), а затем полное имя файла ( %p), каждое из которых будет разделено табуляцией ( \t).

2>/dev/nullотбрасывает любой вывод stderr, чтобы сообщения об ошибках не мешали работе; sort -rсортирует результаты по последнему измененному первому; и | moreперечисляет одну страницу результатов одновременно.

Стивен Дж Тагги
источник
2
Вы могли бы также использовать | lessвместо | more, я полагаю.
Стивен Г Tuggy
7

Для тех, кто приземлится здесь в будущем (включая меня), добавьте опцию -name, чтобы найти конкретные типы файлов, например: find /var -name "*.php" -mtime -1 -ls

resedasue
источник
5

У меня эта команда сработала

find . -mtime -1 -print
BhandariS
источник