Załóżmy, że mam około 10 000 plików w folderze. Używam crontab co godzinę, aby znaleźć pliki zmodyfikowane w ciągu ostatnich 60 minut, a następnie je przetworzyć.
Wywołaj find -mmin -60
o 01:00:00
Załóżmy, że pierwszy plik został zmodyfikowany o godzinie 00:00:00 i łatwo go znaleźć za pomocą polecenia „znajdź” o godzinie 01:00:00.
Następnie załóżmy, że 10.000-ty plik również został zmodyfikowany o godzinie 00:00:00
ale jest teraz o godzinie 01:10 : 00 i „find” nadal ciężko pracuje, aby dotrzeć do 10 000-tego pliku
Więc teraz, 70 minut później, polecenie „find” zwróci 10.000. plik, który został zmodyfikowany o 00:00:00?
Odpowiedź
W GNU find
, czas odniesienia używany do oceny pliki z -mmin
itp. są obliczane i zapisywane podczas analizowania wyrażenia , więc obowiązuje, gdy .
Oznacza to, że wszystkie takie porównania czasowe używają tego samego odniesienia czasu dla wszystkich ocenianych plików, czyli czasu, w którym find
przeanalizował jego wiersz poleceń.
Odpowiedź
Zakładając, że GNU find, można to łatwo przetestować:
% 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 %
A więc chociaż b
był ostatnio modyfikowany co najmniej 4 minuty po find
uruchomieniu dla a
, nadal pasuje.
Ponieważ -mmin
nie „t POSIX, to zależy od implementacji, ale spodziewałbym się zachowania opisanego powyżej.
Komentarze
- FW IW, (oparty na FreeBSD?)
find
na moim Macu pokazuje również oba pliki zfind . -mmin 1 -exec sleep 120 \; -print
Odpowiedź
Wypróbuj następujące polecenie jedno po drugim na dwóch terminalach
Terminal 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
jesteśmy w stanie otrzymać wynik jako
Wed Jul 17 11:48:33 IST 2019 Wed 17 Jul 2019 11:48:34 AM IST /path/to/some/file
I” m poprzedzam czas rozpoczęcia polecenia wynikiem find. pokazuje, że find
jest w stanie wyszukiwać pliki, które zostały zmodyfikowane po czasie rozpoczęcia polecenia.