8

Как я могу использовать find чтобы выбрать файлы, которые были записаны и не были изменены в последнюю минуту?

Я знаю, что могу сделать это наоборот, найти файлы, измененные за последние 60 секунд с -mtime -60s , но мне нужны файлы, которые не были изменены за последние 60 секунд.

Я использую Linux и получаю эту ошибку, если я использую секунды:

find ??/ -mtime +60s -name blah.tsv
find: invalid argument `+60s' to `-mtime'

5 ответов5

14
find . -type f -mmin +1

пример

$ ls *
four.txt  one.txt  three.txt  two.txt

$ touch foo && find . -mmin +1
.
./three.txt
./four.txt
./two.txt
./one.txt
12

Используйте find /path -type f -mtime +60s

Буква - перед цифрами не является обычной "чертой аргумента", но означает "меньше чем". + тогда "больше чем".

От man find:

Все первичные числа, которые принимают числовой аргумент, разрешают перед числом ставить знак плюс (``+'') или знак минус (`` - ''). Предыдущий знак плюс означает «больше чем n», предыдущий знак минус означает «меньше чем n», и ни один из них не означает «точно n».

Следует отметить, что для ровно n время округляется. Таким образом, 1 (1 день) не означает 86400 секунд.

4

Второе - в -mtime -60s не является разделителем опций.

-mtime является опцией, за ней следует аргумент опции. Аргумент опции равен -60s , и - в нем является частью самого аргумента опции, а не разделителем опции. Это означает "менее 60 секунд". Аргументы опции 60s и +60s означают "равный 60 секундам" и "больше 60 секунд" соответственно.

Руководство Apple MacOS и руководство FreeBSD упоминают префиксы + и - в одном месте и забывают где-либо объяснять, что это такое. Это то, что они есть.

(Руководство GNU Info для GNU find имеет то же упущение, что довольно интересно. Однако GNU find «s синтаксис раз несколько отличается от BSD и MacOS find синтаксис.)

дальнейшее чтение

3

Вы должны быть в состоянии использовать

find . ! -mtime -60s
1

В системах Unix -mtime использовался после +/-, за которым следовало число, за которым следовали единицы времени. [+-] Н. [д.м.н.]

Linux использует mtime для дней, mmin для минут, но, кажется, нет опции секунд и не использует спецификатор единиц времени. + Или - все еще относится к большему или меньшему времени, а не как аргумент опции, как упомянуто выше.

Вы можете использовать -mmin 1, но https://unix.stackexchange.com/questions/238738/find-files-newer-than-15-seconds-but-older-than-2-seconds обсуждает, как обрабатывать секунды в целом ,

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .