Знайдіть усі файли старші однієї хвилини


8

Як я можу findвибрати файли, які були записані та не змінені в останню хвилину?

Я знаю, що можу це зробити навпаки, знайти файли, змінені за останні 60 секунд -mtime -60s, але я хочу, щоб ті, які не були змінені за останні 60 секунд.

Я використовую Linux і отримую цю помилку, якщо використовую секунди:

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

Відповіді:


13

Використовуйте find /path -type f -mtime +60s

-Тільки перед цифрами не є звичайним «аргументом тир», а значить «менше». +то "більше, ніж".

Від man find:

Усі праймери, які приймають числовий аргумент, дозволяють передувати цифрі знаком плюс (`` + '') або знаком мінус (`` - ''). Попередній знак плюс означає `` більше n '', а попередній знак мінус означає `` менше n '' і не означає `` точно n ''.

Слід зазначити, що саме для n часу час округлюється. Отже 1(1 день) не означає 86400 секунд.


2
Строго кажучи, +60це не протилежне -60, з тієї ж причини менше, ніж не є протилежністю більшому : Обидва виключають точне значення, з яким вони порівнюють. Але ваше запитання не вказує, якої саме поведінки ви хочете.
Даніель Бек

Насправді це не зовсім так! повертає оригінальний "запит". Але погоджено, що ОП не визначає, чого він хоче.
Каролос

На наступний день ОП заявив, що це на Linux, а не на Mac OS X. Якщо це змінило б відповідь, можете оновити її?
Пітер Мортенсен

1
Так, це не працює в Linux. Принаймні RHEL 5.6. Однак відповідь SiegeX працює нижче.
MattPark

2
Це не працює на CentOS. Як передбачається, він працює в Mac OS X
trante

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

Це більше не позначено тегом osx.
Пітер Мортенсен

4

Другий -в -mtime -60s- це не роздільник варіантів.

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

Посібник Apple MacOS та посібник FreeBSD точно в одному місці згадують +і -префікси, і забудьте будь-де пояснити, що вони є. Це вони є.

(Посібник з інформації про GNU для GNU findмає той самий пропуск, що цікаво. Однак findсинтаксис GNU за часом дещо відрізняється від findсинтаксису BSD та MacOS .)

Подальше читання


1
Це навіть гірше, ніж просто пояснити його саме в одному місці : Усі інші параметри стосуються atimeформату часу, але це також не пояснює префікси . Це окремий розділ, на який не посилаються.
Даніель Бек

Дійсно; і ти виявиш, що я це написав. Я написав «згадку», і «забудь де-небудь пояснити». ☺
JdeBP

Я не мав на увазі суперечити вам, просто хотів зазначити, що саме одне місце - це також найгірше можливе місце з POV "давайте просто переглянемо сторінку чоловіка".
Даніель Бек

Але це не пояснено точно в одному місці. Це взагалі не пояснюється. Для набору сторінок з посібниками, які, як правило, написані та відредаговані досить добре, на мій досвід, це дивовижний недолік.
JdeBP

1
Хе! Це тому, що ви вже магічно знаєте відповідь і зможете з'єднати твійн під час читання документа, заповнивши те, що насправді не написано. Люди, у яких немає (у) нашої передбачуваності та читають посібник, щоб дізнатись, повинні задатися питанням, чому ніде немає пояснення, що таке "модифікатор". ☺
JdeBP

3

Ви повинні мати можливість використовувати

find . ! -mtime -60s

1
Потрібна дужка для мене:find . !( -mtime -60s )
Der Hochstapler

@OliverSalzburg: На моєму Mac він працює добре без круглих дужок (Darwin Kernel Version 11.2.0).
Каролос

1

У системах Unix -м часу використовувався +/-, а потім число, за яким одиниці часу. [+ -] nn [дмс]

Linux використовує mtime днями, mmin хвилин, але, здається, не існує варіантів секунд і не використовує специфікатор одиниць часу. + Або - як і раніше посилається на більший або менший час, а не на аргумент опції, як згадувалося вище.

Ви можете використовувати -mmin 1, але /unix/238738/find-files-newer-than-15-seconds-but-older-than-2-seconds обговорює, як обробити секунди взагалі .

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