Як знайти файли, створені за останню годину в 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який я використовую. ОП сказав, що Unix, і я думаю, що це лише Linux.
джиггі

12
Хитрість полягає у використанні негативних значень часу! На сторінці "man" це не так очевидно.
сфакка

Відповідь @jiggy Ayush дає хакер (заснований на -newer), який повинен працювати на Solaris.
Девід Молес

3
-cmin НЕ час створення, а зміна часу! щойно видалив мою причину .config dir на тестовому пробігу, вона не змінювалася за останніх хвилин X, і коли я робив rm, це було .... так, можливо, редагуйте це ...
Badmaster

Я все ще думаю, що перший коментар прикладу потребує перегляду. "час зміни" - це статус файлу, а не дані файлу
KC Baltz

24

Файлові системи UNIX (як правило) не зберігають час створення. Натомість є лише час доступу, час модифікації (даних) та час зміни (inode).

Як говориться, findмає -atime -mtime -ctimeпредикати:

$ людина 1 знахідка
...
-час   н
        Первинну оцінюють як істинну, якщо час останньої зміни
        інформація про стан файлу, віднята від часу ініціалізації,
        ділиться на 86400 (з рештою відкинутої), є n.
...

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


86400 секунд - це день , а не година. Таким чином, аргумент -ctimeтощо полягає в одиницях днів, а не годинах.
Гейлон

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 години ..
ayush

4
круто !! Хоча перша команда не потрібна. touchстворює файл, якщо він вже не існує.
Амір Уваль


3
sudo find / -Bmin 60

Зі manсторінки:

-Бмін н

Щоправда, якщо різниця між часом створення inode файлу та часом, що findрозпочався, округляється до наступної повної хвилини, становить n хвилин.

Очевидно, ви можете налаштувати трохи інакше, але це основне здається найкращим рішенням для пошуку будь-якого файлу, створеного за останні N хвилин.


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

0

Ознайомтесь із цим посиланням для отримання більш детальної інформації.

Щоб знайти файли, створені за останню годину в поточному каталозі, ви можете використовувати -amin

знайти. -амін -60 -типу f

Тут знайдуться файли, створені за останні 1 годину.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.