Si uno find
no tiene -mmin
y si uno también está atascado con un find
que acepta solo valores enteros para -mtime
, entonces no todo se pierde necesariamente si uno considera que "más antiguo que" es similar a "no más nuevo que".
Si pudiéramos crear un archivo que tiene un tiempo m de nuestro tiempo de corte, podemos solicitar find
localizar los archivos que "no son más nuevos que" nuestro archivo de referencia.
Para crear un archivo que tiene la marca de hora correcta es un poco involucrados debido a que un sistema que no tenga una adecuada find
probablemente también tiene una menor a la capacidad date
de comando que podría hacer cosas como: date +%Y%m%d%H%M%S -d "6 hours ago"
.
Afortunadamente, otras herramientas antiguas que pueden manejar esto, aunque de una manera más difícil de manejar.
Considere que seis horas son 21600 segundos. Queremos encontrar el tiempo que hace seis horas en un formato que sea útil:
$ 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
La declaración perl produjo una fecha útil, pero debe utilizarse mejor:
$ 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
Ahora la solución para este antiguo UNIX es algo similar a:
$ find . -type f ! -newer ref_file -a ! -name ref_file -exec rm -f "{}" \;
También podría ser una buena idea limpiar nuestro archivo de referencia ...
$ rm -f ref_file