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

3

Eu preciso encontrar arquivos dentro de um intervalo de datas para o minuto. Suponho que saber como fazer isso para o segundo pode ser benéfico um dia. De qualquer forma. Aprendi a usar -newermt e até mesmo -newermt; no entanto, parece que não consigo obter resultados corretos quando os combino. Eu encontrei exemplos de Linux usando find, mas não acho que os switches estão trabalhando 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

Espero que o seguinte comando retorne o test1.swc por meio do test4.swc; no entanto, 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

Eu achei que o minuto para a condição -não estava desativada, então tentei o seguinte, mas ela não retornou nada:

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

Eu concluí que não estou combinando adequadamente as opções -newermt e -new-newermt. Algum conselho sobre como corrigir isso?

    
por Michael Prescott 27.10.2010 / 05:25

1 resposta

5

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

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

Ao pesquisar pela ajuda do comando, lembre-se de que você deseja pesquisar o BSD, porque existem algumas diferenças que eu uso páginas do manual do FreeBSD

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

#$ find . -newermt "2010-10-26 20:11:00" ! -newermt "2010-10-26 20:13:00"
    
por 27.10.2010 / 06:08