Jestem stara się owinąć wokół zdanie dlaczego te find
interpretuje plik czasy modyfikacji sposób to robi. W szczególności nie rozumiem, dlaczego -mtime +1
nie wyświetla plików starszych niż 48 godzin.
Jako przykładowy test stworzyłem trzy pliki testowe z różnymi zmodyfikowanymi datami:
[root@foobox findtest]# ls -l
total 0
-rw-r--r-- 1 root root 0 Sep 25 08:44 foo1
-rw-r--r-- 1 root root 0 Sep 24 08:14 foo2
-rw-r--r-- 1 root root 0 Sep 23 08:14 foo3
Następnie uruchomiłem find z -mtime +1
przełącznikiem i uzyskałem następujące dane wyjściowe:
[root@foobox findtest]# find -mtime +1
./foo3
Następnie uruchomiłem find z -mmin +1440
i otrzymałem następujące dane wyjściowe:
[root@foobox findtest]# find -mmin +1440
./foo3
./foo2
Jeśli chodzi o stronę podręcznika wyszukiwania, rozumiem, że jest to oczekiwane zachowanie:
-mtime n
File’s data was last modified n*24 hours ago. See the comments
for -atime to understand how rounding affects the interpretation
of file modification times.
-atime n
File was last accessed n*24 hours ago. When find figures out
how many 24-hour periods ago the file was last accessed, any
fractional part is ignored, so to match -atime +1, a file has to
have been accessed at least two days ago.
Jednak nadal nie ma to dla mnie sensu. Więc jeśli plik ma 1 dzień, 23 godziny, 59 minut i 59 sekund, find -mtime +1
ignoruje to wszystko i traktuje go tak, jakby miał 1 dzień, 0 godzin, 0 minut i 0 sekund? W takim razie nie jest technicznie starszy niż 1 dzień i jest ignorowany?
Nie… nie… oblicza.