Supponiamo che io abbia circa 10.000 file in una cartella. Ho utilizzato crontab ogni ora per trovare i file che sono stati modificati negli ultimi 60 minuti e poi elaborarli.

Invoca find -mmin -60 all01: 00:00

Supponiamo che il primo file sia stato modificato alle 00:00:00 e facilmente trovato da “trova” alle 01:00:00.

Quindi, supponiamo che anche il 10.000 ° file sia stato modificato alle 00:00:00

ma ora sia alle 01:10 : 00 e “find” sta ancora lavorando duramente per raggiungere il 10.000 ° file

Quindi ora, 70 minuti dopo, “find” restituirà il 10.000 ° file che è stato modificato alle 00:00:00?

Risposta

In GNU find, il tempo di riferimento utilizzato per valutare i file con -mmin ecc. vengono calcolati e memorizzati quando lespressione viene analizzata , quindi in vigore quando find inizia.

Ciò significa che tutti questi confronti temporali utilizzano lo stesso riferimento temporale per tutti i file valutati, lora in cui find ha analizzato la sua riga di comando.

Answer

Supponendo GNU find, questo è facilmente verificabile:

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

Quindi, anche se b è stato modificato lultima volta almeno 4 minuti dopo che find è stato eseguito sleep 120 per a, corrispondeva ancora.


Poiché -mmin non è “t POSIX, dipende dallimplementazione, ma mi aspetto il comportamento visto sopra.

Commenti

  • FW IW, il find (basato su FreeBSD?) Sul mio Mac mostra anche entrambi i file con find . -mmin 1 -exec sleep 120 \; -print

Risposta

Prova il seguente comando uno dopo laltro in due terminali

Terminale 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 

siamo in grado di ottenere il risultato come

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

Inserisco il prefisso dellora di inizio del comando con il risultato di ricerca. mostra che find è in grado di cercare i file che vengono modificati dopo lora di inizio del comando.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *