Uma maneira é (ab) usar o horário da época. Aqui está um teste em que primeiro crio sete arquivos em sequência em um diretório vazio, onde os arquivos c#
recebem "o mesmo" ctime
em relação a find
:
$ for i in a b "c1 c2 c3" d e; do touch $i; sleep 1; done
$ find -newer c2
.
./d
./e
$ find -not -newer c2
./c3
./c2
./a
./b
./c1
$ find -newerct @$(($(stat -c %Z c2)-1))
.
./c3
./d
./c2
./e
./c1
$ find -not -newerct @$(($(stat -c %Z c2)-1))
./a
./b
Isso deve representar todos os conjuntos possíveis de ctime
relativos a c2
:
-
ctime
> %código% -
c2
≤ctime
-
c2
≥ctime
-
c2
< %código%
com correspondências um pouco difusas, pelo menos.
O terceiro comando obtém epoch ctime
para o arquivo c2
, subtrai 1 via aritmética de shell e alimenta isso como referência a ctime
(o c2
é necessário para que -newerct
interprete é como um timestamp ) para localizar todos os arquivos com @
mais recente que este timestamp interpretado (consulte find
in ctime
). O quarto comando nega esta correspondência e deve, na prática, fazer o que você quer se eu entendi a pergunta corretamente, se você colocar seu arquivo de referência como -newerXY
no meu exemplo.
Observe que o deslocamento de "1 segundo" é um tanto arbitrário (que é o que eu quis dizer com "correspondência difusa"), e pode-se imaginar uma situação em que um erro possa ser construído. No entanto, os registros de data e hora dos arquivos não são "definidos" de qualquer maneira e não podem ser confiáveis, portanto, não posso imaginá-los para gerar problemas práticos ou de segurança em situações reais.
Na prática, você pode até querer aumentar o deslocamento de 1 segundo (vejo na sua pergunta que você usa 1 minuto agora), mas isso é um detalhe de implementação.