Să presupunem că am aproximativ 10.000 de fișiere într-un folder. Am folosit crontab orar pentru a găsi fișiere modificate în ultimele 60 de minute, apoi să le procesez.
Invocă find -mmin -60
la 01:00:00
Presupunem că primul fișier a fost modificat la 00:00:00 și ușor de găsit de „găsiți” la 01:00:00.
Apoi, presupuneți că al 10.000-lea fișier a fost modificat și la 00:00:00
dar acum este la 01:10 : 00 și „find” încă lucrează din greu pentru a ajunge la fișierul 10.000
Deci, acum, la 70 de minute mai târziu, va „găsi” întoarcerea a 10.000 fișier care a fost modificat la 00:00:00?
Răspuns
În GNU find
, timpul de referință utilizat pentru evaluarea fișierele cu -mmin
etc. este calculat și stocat atunci când expresia este analizată , deci în vigoare când find
începe.
Aceasta înseamnă că toate astfel de comparații de timp utilizează aceeași referință de timp pentru toate fișierele evaluate, ora la care find
și-a analizat linia de comandă.
Răspuns
Presupunând căutarea GNU, acest lucru este ușor testat:
% 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 %
Deci, chiar dacă b
a fost modificat ultima dată cel puțin 4 minute după ce find
a rulat sleep 120
pentru a
, încă se potrivește.
Deoarece -mmin
isn „t POSIX, asta depinde de implementare, dar aș aștepta comportamentul văzut mai sus.
Comentarii
- FW IW, (FreeBSD-based?)
find
de pe Mac-ul meu afișează, de asemenea, ambele fișiere cufind . -mmin 1 -exec sleep 120 \; -print
Răspuns
Încercați următoarea comandă una după alta în două terminale
Terminalul 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
suntem capabili să obținem rezultatul ca
Wed Jul 17 11:48:33 IST 2019 Wed 17 Jul 2019 11:48:34 AM IST /path/to/some/file
Am” prefixând ora de începere a comenzii cu rezultatul căutării. arată, find
este capabil să caute fișierele care sunt modificate după ora de începere a comenzii.