Как найти файлы, созданные за последний час в unix

135

Как найти файлы, созданные за последний час в unix

Анкур
источник

Ответы:

213

Если каталог для поиска, srch_dirто либо

$ find srch_dir -cmin -60 # change time

или

$ find srch_dir -mmin -60 # modification time

или

$ find srch_dir -amin -60 # access time

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

исправление: ctime предназначен для изменения времени узла (хотя не уверен, исправьте меня)

Самира
источник
2
Это здорово и все такое, но этих флагов нет в Solaris, findкоторый я использую. OP сказал Unix, и я думаю, что это только Linux.
jiggy
12
Уловка состоит в том, чтобы использовать отрицательные значения времени! На странице руководства это не так очевидно.
sphakka
@jiggy ответ Ayush в дает хак (на основе -newer) , который должен работать на Solaris.
Дэвид Молес
3
-cmin - это НЕ время создания, а время изменения! просто удалил мой каталог .config, потому что при тестовом запуске он не был изменен за последние X минут, а когда я сделал rm, это было .... так что, возможно, отредактируйте это ...!
Badmaster
Я все еще думаю, что первый пример комментария нуждается в доработке. «время изменения» - это статус файла, а не данные файла
KC Baltz
24

Файловые системы UNIX (как правило) не хранят время создания. Вместо этого есть только время доступа, время модификации (данных) и время изменения (inode).

При этом findесть -atime -mtime -ctimeпредикаты:

$ человек 1 найти
...
-время   n
        Первичный должен оцениваться как истинный, если время последнего изменения
        информация о состоянии файла, вычтенная из времени инициализации,
        деленное на 86400 (без остатка), равно n.
...

Таким образом find -ctime 0обнаруживается все, для чего был изменен индексный дескриптор (например, включая создание файла, но также подсчитывается количество ссылок, разрешения и изменение размера файла) менее часа назад.

ephemient
источник
86400 секунд - это день , а не час. Таким образом, аргумент и -ctimeт. Д. Выражается в днях, а не часах.
Gaylon 02
12

проверьте эту ссылку, а затем помогите себе.

базовый код

#create a temp. file
echo "hi " >  t.tmp
# set the file time to 2 hours ago
touch -t 200405121120  t.tmp 
# then check for files
find /admin//dump -type f  -newer t.tmp -print -exec ls -lt {} \; | pg
Ayush
источник
Спасибо, но это будет искать только t.tmp. Что, если я хочу найти все файлы, созданные за последний час.
Анкур,
2
Ankur: он создаст временный файл t.tmp и установит время его создания на 2 часа назад ... после этого он будет искать в текущем каталоге все файлы, которые были созданы после t.tmp, то есть за последние 2 часа ..
Аюш
4
прохладный!! Хотя первая команда не нужна. touchсоздает файл, если он еще не существует.
Амир Уваль,
5

find ./ -cTime -1 -type f

ИЛИ

find ./ -cmin -60 -type f

гвечо хуан
источник
3
sudo find / -Bmin 60

Со manстраницы:

-Bmin n

Истинно, если разница между временем создания inode файла и временем findего запуска, округленная до следующей полной минуты, составляет n минут.

Очевидно, вы можете захотеть настроить немного по-другому, но этот первичный объект кажется лучшим решением для поиска любого файла, созданного за последние N минут.

sudon't
источник
find (GNU findutils) 4.6.0не имеет -Bпредиката
blockloop
0

Посетите эту ссылку для получения более подробной информации.

Чтобы найти файлы, созданные за последний час в текущем каталоге, вы можете использовать -amin

найти . -амин -60 -тип f

Это найдет файлы, созданные за последний час.

Джамре Лудхи
источник