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 confind . -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.