Jeśli ktoś find
tego nie ma, -mmin
a jeśli ktoś utknął z wartością, find
która akceptuje tylko wartości całkowite -mtime
, wówczas niekoniecznie wszystko stracone, jeśli weźmie się pod uwagę, że „starszy od” jest podobny do „nie nowszy niż”.
Gdybyśmy byli w stanie stworzyć plik, który ma mime naszego czasu odcięcia, możemy zapytać find
o zlokalizowanie plików, które nie są „nowsze niż” nasz plik referencyjny.
Aby utworzyć plik, który ma prawidłowy znacznik czasu jest nieco zaangażowane, ponieważ system, który nie posiada odpowiedniego find
prawdopodobnie ma również mniej niż zdolny date
polecenia, które mogą robić takie rzeczy jak: date +%Y%m%d%H%M%S -d "6 hours ago"
.
Na szczęście inne stare narzędzia, które mogą sobie z tym poradzić, choć w bardziej niewygodny sposób.
Weź pod uwagę, że sześć godzin to 21600 sekund. Chcemy znaleźć czas sprzed sześciu godzin w przydatnym formacie:
$ date && perl -e '@d=localtime time()-21600; \
printf "%4d%02d%02d%02d%02d.%02d\n", $d[5]+1900,$d[4]+1,$d[3],$d[2],$d[1],$d[0]'
> Thu Apr 16 04:50:57 CDT 2020
202004152250.57
Instrukcja perla przyniosła użyteczną datę, ale należy ją lepiej wykorzystać:
$ date && touch -t `perl -e '@d=localtime time()-21600; \
printf "%4d%02d%02d%02d%02d.%02d\n", \
$d[5]+1900,$d[4]+1,$d[3],$d[2],$d[1],$d[0]'` ref_file && ls -l ref_file
Thu Apr 16 04:53:54 CDT 2020
-rw-rw-rw- 1 root sys 0 Apr 15 22:53 ref_file
Teraz rozwiązaniem dla tego starego systemu UNIX jest coś takiego:
$ find . -type f ! -newer ref_file -a ! -name ref_file -exec rm -f "{}" \;
Dobrym pomysłem może być również wyczyszczenie naszego pliku referencyjnego ...
$ rm -f ref_file