Předpokládejme, že ve složce mám asi 10 000 souborů. Používám hodinovou crontab k vyhledání souborů, které byly změněny za posledních 60 minut, a poté je zpracovat.

Vyvolat find -mmin -60 v 01:00:00

Předpokládejme, že první soubor byl upraven v 00:00:00 a snadno nalezen pomocí „find“ v 01:00:00.

Pak předpokládejme, že 10 000. soubor byl upraven také v 00:00:00

, ale je nyní v 01:10 : 00 a „find“ stále tvrdě pracuje na dosažení 10 000. souboru

Takže nyní, o 70 minut později, „find“ vrátí 10 000. soubor, který byl upraven v 00:00:00?

Odpověď

V GNU find je referenční čas, který se používá k vyhodnocení soubory s -mmin atd. se vypočítají a uloží při analýze výrazu , takže ve skutečnosti, když find začíná.

To znamená, že všechna taková časová srovnání používají stejnou časovou referenci pro všechny hodnocené soubory, čas, kdy find analyzoval jeho příkazový řádek.

Odpověď

Za předpokladu, že GNU najde, je to snadno otestováno:

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

Takže i když byl b naposledy upraven alespoň 4 minuty po find běhu sleep 120 pro a se stále shoduje.


Protože -mmin není „POSIX, toto je na implementaci, ale neočekávám chování, které je vidět výše.

Komentáře

  • FW IW, (založené na FreeBSD?) find na mém Macu také zobrazuje oba soubory s find . -mmin 1 -exec sleep 120 \; -print

Odpověď

Zkuste následující příkaz jeden po druhém ve dvou terminálech

Terminál 1:

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

Terminál 2:

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

výsledek můžeme získat jako

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

Předponou počátečního času příkazu je výsledek hledání. ukazuje, že find je schopen vyhledávat soubory, které jsou po spuštění příkazu změněny.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *