Как установить (найти) время в секундах?

Это JSON, а инструменты Linux не очень подходят для работы с JSON. И ваши условия не очень ясны ... Но этот однострочный Perl выводит из вашего примера строку «I win»

perl -0777 -nE 's/.*"(.+?)","confidence".*/$1/s; say'
5
20.01.2017, 23:36
2 ответа

Обратите внимание, что когда вы выполняете - mtime , проверяет возраст файла на момент запуска find .

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

Также обратите внимание, что не все файловые системы поддерживают метки времени с субсекундной детализацией.

Однако есть несколько вариантов.

С помощью find многих BSD и одного из schily-tools вы можете:

find . -atime -1s

Чтобы найти файлы, к которым последний раз доступ осуществлялся менее секунды назад ( по сравнению с тем, когда был запущен find ).

С zsh :

ls -ld -- **/*(Dms-1)

Для субсекундной детализации с инструментами GNU вы можете использовать справочный файл, время которого вы установили с помощью touch :

touch -ad '0.5 seconds ago' ../reference
find . -anewer ../reference

Или с последними версиями perl :

perl -MTime::HiRes=lstat,clock_gettime -MFile::Find -le '
  $start =  clock_gettime(CLOCK_REALTIME) - 0.5;
  find(
    sub {
      my @s = lstat $_;
      print $File::Find::name if @s and $s[8] > $start
    }, ".")'
8
27.01.2020, 20:32

С помощью GNU find вы можете использовать -amin вместо -atime . Как вы могли догадаться, это «последний раз доступ к файлу был осуществлен n минут назад»

. Тем не менее, имейте в виду, что большинство современных систем по умолчанию используют параметр relatime для файловых систем, который сохраняет записи метаданных только обновление, если файл был фактически изменен с момента последнего доступа или если превышен порог (обычно 24 часа).

Итак, вы, вероятно, захотите либо изменить это для рассматриваемой файловой системы, либо поищите другой подход. incrond - удобный способ настроить сценарии для запуска при активности файловой системы без необходимости писать собственный демон.

10
27.01.2020, 20:32

Теги

Похожие вопросы