2013-04-18 3 views
167

E.g. На моей машине Ubuntu работает Mysql-сервер. Некоторые данные были изменены в течение последних 24 часов.Сценарии: найти файлы были изменены за последние 24 часа

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

Укажите имена файлов, размеры файлов и модифицированное время.

+1

Вы можете использовать http://stackoverflow.com/questions/4561895/how-to-recursively-find-the-latest-modified-file-in-a-directory – vaugham

ответ

321

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

find /directory_path -mtime -1 -ls 

должен быть по своему вкусу

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

+8

приятно! как насчет последних 2 часов? – JackWM

+73

использовать «-mmin -120» вместо mtime – Xavjer

+0

спасибо за ваш ответ, но я хочу получить возвращаемое значение, если эта команда получила модифицированный файл, а если нет? – Spartan

29

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

find . -mtime 0 

От man find:

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

5

Эта команда работает для меня

find . -mtime -1 -print 
6

В 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 перечисляет одну страницу результатов за раз.

+0

Вы также можете использовать '| меньше' вместо '| больше', я полагаю. –

1

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

+1

Вам нужно защитить * двойными кавычками, иначе он будет расширяться в командной строке: 'find/var -name * * .php" -mtime -1 -ls' – jytou

3

Другой способ:

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

или:

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

или:

find /<directory> -newermt "yesterday" -ls 
Смежные вопросы