С GNU find
:
find . -daystart -type f -mtime -2 -mtime +-1 -ls
предоставит вам файлы, которые были в последний раз изменены между вчера 00:00:00 и 23:59: 59.999999999 сегодня. Это может дать вам неправильные результаты при переключении с / на летнее время (в часовых поясах с зимним / летним временем), поскольку он считает количество 24-часовых единиц с начала сегодняшнего дня и вокруг перехода на / с летнего времени, есть один 23 или 25-часовой день.
Вы также можете сделать (все еще с GNU find
):
find . -type f -newermt yesterday ! -newermt tomorrow -ls
Но это даст файлы, измененные точно в 00: 00: 00.000000000 завтра, а не те, которые были изменены вчера в это время. Ужасно маловероятно, что файл был последний раз изменен за эту наносекунду, но это может произойти для файлов, время модификации которых было установлено произвольно с помощью touch
, например, или в файловых системах, которые не имеют субсекунды. детализация по времени.
С помощью zsh
:
autoload age # best in ~/.zshrc
ls -lrtd -- *(D.e:'age yesterday tomorrow':)
Или рекурсивно, как с find
:
ls -lrtd -- **/*(D.e:'age yesterday tomorrow':)
(то же примечание о границах, что и для find -newermt
выше).
Что касается того, почему вы не получили правильный результат с:
find . -type f -mtime +2 -prune -o -mtime +1 -exec ls -ltr {} \;
Во-первых, обратите внимание, что -a
(подразумевается, когда опущено) имеет приоритет над -o
, поэтому приведенное выше на самом деле:
find . \( -type f -a -mtime +2 -a -prune \) -o \
\( -mtime +1 -a -exec ls -ltr {} \; \)
Таким образом, -тип f
применяется только в первой группе.
-mtime +2
выбирает файлы, возраст которых, округленный до следующего дня (24 часа), строго больше 2, то есть файлы, которые были в последний раз изменены более 48 часов назад (по сравнению с текущей датой). ) и файлы -mtime +1
, которые в последний раз были изменены более 24 часов назад.
Вы хотите, чтобы возраст сравнивался с началом дня (отсюда (специфичный для GNU) -daystart
).
Также обратите внимание, что с -exec ls -lrt {} \;
вы запускаете по одному ls
для каждого файла, поэтому параметр -rt
позволяет сортировать файлы бесполезно has ls
имеет только один файл для сортировки. Вместо этого вы можете использовать -exec ls -lrt {} +
, но даже тогда, если список файлов большой, ls
может вызываться несколько раз.
Согласно этому ответу Quora он проверяет целостность блочных устройств, записывая в них данные и проверяя, что они не изменились.
Кажется, это файл, в котором он определен. Строка 469, похоже, отдает ей высокий приоритет.
Рабочая очередьkintegrityd
реализует расширения целостности данных для блочного ввода-вывода. Все рабочие очереди ядра по умолчанию -20 хороши. Эта система также известна как bio-integrity
, что является гораздо более эффективным поисковым термином. Автор — Мартин К. Петерсен из Oracle. Документация ядра здесь , а исходный код здесь .