Se a pessoa find
não tem -mmin
e se também está presa a uma find
que aceita apenas valores inteiros -mtime
, então nem tudo está perdido se considerarmos que "mais antigo que" é semelhante a "não mais novo que".
Se formos capazes de criar um arquivo que tenha um tempo mínimo de nosso tempo limite, podemos pedir find
para localizar os arquivos que "não são mais novos que" nosso arquivo de referência.
Para criar um arquivo que tem o carimbo de hora correta é um pouco envolvido, porque um sistema que não tenha uma adequada find
provavelmente também tem uma menos-que-capazes date
de comando que poderia fazer coisas como: date +%Y%m%d%H%M%S -d "6 hours ago"
.
Felizmente, outras ferramentas antigas que podem gerenciar isso, ainda que de uma maneira mais difícil.
Considere que seis horas são 21600 segundos. Queremos encontrar o horário de seis horas atrás em um formato ú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
A declaração perl produziu uma data útil, mas precisa ser melhor utilizada:
$ 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
Agora, a solução para esse UNIX antigo é algo parecido com:
$ find . -type f ! -newer ref_file -a ! -name ref_file -exec rm -f "{}" \;
Também pode ser uma boa ideia limpar nosso arquivo de referência ...
$ rm -f ref_file