Como especifico um intervalo de datas para o comando find no OSX?

Como especifico um intervalo de datas para o comando find no OSX?

Preciso encontrar arquivos dentro de um intervalo de datas por minuto. Suponho que saber como fazer isso no segundo pode ser benéfico um dia. De qualquer forma. Aprendi como usar -newermt e até -not -newermt; no entanto, não consigo obter resultados corretos quando os combino. Encontrei exemplos de Linux usando find, mas não acho que os switches estejam funcionando no OSX. Veja a seguinte lista de arquivos:

#$ 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

Eu esperaria que o seguinte comando retornasse test1.swc por meio de test4.swc; entretanto, observe que ele retornou 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

Achei que o minuto da condição -not estava errado, então tentei o seguinte, mas não retornou nada:

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

Concluí que não estou combinando corretamente as opções -newermt e -not -newermt. Algum conselho sobre como corrigir isso?

Responder1

Sua sintaxe parece correta. Como você criou esses arquivos. Eu vi o retorno errado ao usar apenas o toque para atualizar a data.

No BSD -a não é necessário e costumo usar ! em vez de -not (perferência pessoal)

Ao procurar pelo comando help lembre-se que você deseja pesquisar no BSD, pois existem algumas diferenças que eu usoPáginas de manual do FreeBSD

Lembre-se que no arquivo há algo além dos minutos, então se você quiser o primeiro segundo então precisa marcá-lo. Montei uma estrutura como a sua e quando adicionei :00 para os segundos consegui obter os mesmos resultados que você obteve, onde não fazia sentido. então eu fiz um ls -lT e consegui ver os segundos no arquivo e então executei o comando find e obtive os resultados esperados, parece que por padrão o ! ou -not define os segundos como 59, incluindo o minuto inteiro.

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

informação relacionada