
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"