Suponha que tenho cerca de 10.000 arquivos em uma pasta. Tenho usado o crontab de hora em hora para localizar arquivos modificados nos últimos 60 minutos e processá-los.

Invoque find -mmin -60 às 01:00:00

Suponha que o primeiro arquivo foi modificado às 00:00:00 e facilmente encontrado por “localizar” às 01:00:00.

Então, suponha que o 10.000º arquivo foi modificado às 00:00:00 também

mas agora é às 01:10 : 00 e “find” ainda está trabalhando duro para alcançar o 10.000º arquivo

Então agora, 70 minutos depois, “find” retornará o 10.000 arquivo que foi modificado às 00:00:00?

Resposta

No GNU find, o tempo de referência que é usado para avaliar arquivos com -mmin etc. são calculados e armazenados quando a expressão é analisada , portanto, em vigor quando find começa.

Isso significa que todas essas comparações de tempo usam a mesma referência de tempo para todos os arquivos avaliados, o tempo em que find analisou sua linha de comando.

Resposta

Presumindo o GNU find, isso é facilmente testado:

% mkdir foo; cd foo; touch a b % find -mmin 1 . ./a ./b % find -mmin 1 -exec sleep 120 \; -print . # 2 minutes wait before this showed up ./a # another 2 minutes before this showed up ./b # and another 2 minutes for this one % find -mmin 1 % 

Portanto, embora b tenha sido modificado pela última vez pelo menos 4 minutos após find ser executado sleep 120 para a, ainda corresponde.


Uma vez que -mmin isn “t POSIX, isso depende da implementação, mas eu esperava o comportamento visto acima.

Comentários

  • FW IW, o (baseado no FreeBSD?) find no meu Mac também mostra os dois arquivos com find . -mmin 1 -exec sleep 120 \; -print

Resposta

Tente o seguinte comando um após o outro em dois terminais

Terminal 1:

find /path -mmin -0.017 -printf "$(date) %Tc %p\n" | grep "/path/to/some/file" 

Terminal 2:

touch -d " 0 seconds ago" /path/to/some/file 

podemos obter o resultado como

Wed Jul 17 11:48:33 IST 2019 Wed 17 Jul 2019 11:48:34 AM IST /path/to/some/file 

Estou prefixando a hora de início do comando com o resultado de busca. ele mostra, find é capaz de pesquisar os arquivos que são modificados após a hora de início do comando.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *