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 cu find . -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.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *