4

Мне нужно найти файлы в диапазоне дат до минуты. Я предполагаю, что знание того, как сделать это со вторым, может быть полезным в один прекрасный день. Так или иначе. Я научился использовать -newermt и даже -not -newermt; однако, я не могу получить правильные результаты, когда объединяю их. Я нашел в Linux примеры использования find, но не думаю, что коммутаторы работают на OSX. Смотрите следующий список файлов:

#$ ls -l
total 32
-rw-r--r--  1 testuser  staff  1024 Oct 26 20:12 test1.swc
-rw-r--r--  1 testuser  staff     0 Oct 26 19:00 test1_old.swc
-rw-r--r--  1 testuser  staff  1024 Oct 26 20:12 test2.swc
-rw-r--r--  1 testuser  staff     0 Oct 26 19:00 test2_old.swc
-rw-r--r--  1 testuser  staff  1024 Oct 26 20:12 test3.swc
-rw-r--r--  1 testuser  staff     0 Oct 26 19:00 test3_old.swc
-rw-r--r--  1 testuser  staff  1024 Oct 26 20:12 test4.swc
-rw-r--r--  1 testuser  staff     0 Oct 26 19:00 test4_old.swc
-rw-r--r--  1 testuser  staff     0 Oct 26 20:11 test5.swc
-rw-r--r--  1 testuser  staff     0 Oct 26 20:13 test6.swc
-rw-r--r--  1 testuser  staff     0 Oct 26 19:00 timestamp.tmp

Я ожидаю, что следующая команда вернет test1.swc через test4.swc; однако обратите внимание, что он вернул test6.swc:

#$ find . -newermt '2010-10-26 20:11' -a -not -newermt '2010-10-26 20:13'
./test1.swc
./test2.swc
./test3.swc
./test4.swc
./test6.swc

Я думал, что минута для условия -не была выключена, поэтому я попробовал следующее, но ничего не вернулось:

#$ find . -newermt '2010-10-26 20:11' -a -not -newermt '2010-10-26 20:12'
#$ 

Я пришел к выводу, что неправильно комбинирую ключи -newermt и -not -newermt. Любой совет, как это исправить?

1 ответ1

5

Ваш синтаксис выглядит правильно. Как вы создали эти файлы. Я видел неправильное возвращение, когда просто использовал сенсорный для обновления даты.

В BSD -a нет необходимости, и я склонен использовать! вместо -не (личное предпочтение)

При поиске справки по командам помните, что вы хотите искать BSD, потому что есть некоторые различия, которые я использую справочные страницы FreeBSD

Помните, что в файле есть что-то за минуты, поэтому, если вы хотите первую секунду, вам нужно пометить это. Я настроил структуру, подобную вашей, и, добавив:00 на секунды, я смог получить те же результаты, что и вы, где это не имело смысла. поэтому я выполнил команду ls -lT и смог увидеть секунды в файле, а затем запустил команду find и получил ожидаемые результаты, которые по умолчанию выглядят как! или -не устанавливает секунды на 59, поэтому включает в себя всю минуту.

#$ find . -newermt "2010-10-26 20:11:00" ! -newermt "2010-10-26 20:13:00"

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