Как найти файлы, созданные за последний час в 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обнаруживается все, для чего был изменен индексный дескриптор (например, включая создание файла, но также подсчитывается количество ссылок, разрешения и изменение размера файла) менее часа назад.


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

Спасибо, но это будет искать только t.tmp. Что, если я хочу найти все файлы, созданные за последний час.
Анкур,

2
Ankur: он создаст временный файл t.tmp и установит время его создания на 2 часа назад ... после этого он будет искать в текущем каталоге все файлы, которые были созданы после t.tmp, то есть за последние 2 часа ..
Аюш

4
прохладный!! Хотя первая команда не нужна. touchсоздает файл, если он еще не существует.
Амир Уваль,


3
sudo find / -Bmin 60

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

-Bmin n

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

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


find (GNU findutils) 4.6.0не имеет -Bпредиката
blockloop

0

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

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.