Supongamos que tengo unos 10.000 archivos en una carpeta. He estado usando crontab por horas para encontrar archivos que se modifican en los últimos 60 minutos y luego procesarlos.

Invoque find -mmin -60 a las 01:00:00

Suponga que el primer archivo se modificó a las 00:00:00 y se encontró fácilmente mediante «buscar» a las 01:00:00.

Entonces, suponga que el archivo número 10.000 también se modificó a las 00:00:00

pero ahora está a las 01:10 : 00 y «find» todavía está trabajando duro para alcanzar el archivo número 10,000

Así que ahora, 70 minutos después, «find» devolverá el archivo 10,000. archivo que fue modificado a las 00:00:00?

Respuesta

En GNU find, el tiempo de referencia que se usa para evaluar Los archivos con -mmin etc.se se calcula y se almacena cuando se analiza la expresión , por lo que en efecto cuando find comienza.

Esto significa que todas estas comparaciones de tiempo utilizan la misma referencia de tiempo para todos los archivos evaluados, la hora a la que find analizó su línea de comando.

Respuesta

Suponiendo que GNU encuentre, esto se prueba fácilmente:

% 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 % 

Entonces, aunque b se modificó por última vez al menos 4 minutos después de que find ejecutara sleep 120 para a, todavía coincide.


Dado que -mmin isn «t POSIX, esto depende de la implementación, pero esperaría el comportamiento visto arriba.

Comentarios

  • FW IW, el (¿basado en FreeBSD?) find en mi Mac también muestra ambos archivos con find . -mmin 1 -exec sleep 120 \; -print

Responder

Pruebe el siguiente comando uno tras otro en dos terminales

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 obtener el resultado como

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

Estoy prefijando la hora de inicio del comando con el resultado de búsqueda. muestra, find puede buscar los archivos que se modifican después de la hora de inicio del comando.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *