Se uno findnon ha -mmine se anche uno è bloccato con un findche accetta solo valori interi -mtime, allora tutto non è necessariamente perso se si considera che "più vecchio di" è simile a "non più nuovo di".
Se siamo riusciti a creare un file che ha un tempo di interruzione, possiamo chiedere finddi individuare i file "non più recenti" del nostro file di riferimento.
Per creare un file che ha il corretto time stamp è un po 'coinvolta perché un sistema che non dispone di un adeguato findprobabilmente ha anche un meno-che-capace datedi comando che potrebbe fare cose come: date +%Y%m%d%H%M%S -d "6 hours ago".
Fortunatamente, altri vecchi strumenti che possono gestirlo, anche se in modo più ingombrante.
Considera che sei ore sono 21600 secondi. Vogliamo trovare il tempo che è sei ore fa in un formato utile:
$ 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
L'istruzione perl ha prodotto una data utile, ma deve essere utilizzata meglio:
$ 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
Ora la soluzione per questo vecchio UNIX è qualcosa del tipo:
$ find . -type f ! -newer ref_file -a ! -name ref_file -exec rm -f "{}" \;
Potrebbe anche essere una buona idea ripulire il nostro file di riferimento ...
$ rm -f ref_file