Oletetaan, että kansiossa on noin 10000 tiedostoa. Olen käyttänyt tuntikohtaista hakemistoa hakeaksesi tiedostoja, joita on muokattu viimeisten 60 minuutin aikana, ja käsittelen ne sitten.

Kutsu find -mmin -60 klo 01:00:00

Oletetaan, että ensimmäistä tiedostoa muokattiin klo 00:00:00 ja ”find” löysi sen helposti klo 01:00:00.

Oletetaan sitten, että 10 000. tiedostoa muokattiin myös klo 00:00:00.

mutta on nyt 01:10 : 00 ja ”find” tekee edelleen kovasti töitä saavuttaakseen 10 000. tiedoston

Joten nyt, 70 minuuttia myöhemmin, ”etsi” palauttaa 10000: n tiedosto, jota muokattiin klo 00:00:00?

vastaus

GNU: ssa find viiteaika, jota käytetään arvioinnissa -mmin jne. tiedostot lasketaan ja tallennetaan, kun lauseke on jäsennetty , joten voimassa, kun find alkaa.

Tämä tarkoittaa, että kaikki tällaiset aikavertailut käyttävät samaa aikaviitettä kaikille arvioiduille tiedostoille, jolloin find jäsennti komentorivinsä.

Vastaa

Olettaen GNU-löydöksen, tämä on helppo testata:

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

Joten vaikka b muokattiin viimeksi vähintään 4 minuuttia sen jälkeen, kun find juoksi sleep 120 kohteelle a, se sopi edelleen.


Koska -mmin ei ole ”t POSIX, tämä riippuu toteutuksesta, mutta odotan yllä kuvattua käyttäytymistä.

Kommentit

  • FW IW, (FreeBSD-pohjainen?) find Macissa näyttää myös molemmat tiedostot find . -mmin 1 -exec sleep 120 \; -print

vastaus

Kokeile seuraavaa komentoa peräkkäin kahdessa päätteessä

Terminaali 1:

find /path -mmin -0.017 -printf "$(date) %Tc %p\n" | grep "/path/to/some/file" 

Terminaali 2:

touch -d " 0 seconds ago" /path/to/some/file 

voimme saada tuloksen muodossa

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

Etuliitän komennon aloitusajan hakutuloksella. se osoittaa, että find pystyy etsimään tiedostoja, joita on muokattu komennon alkamisajan jälkeen.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *