Observe que quando você executa -mtime <timespec>
, o <timespec>
verifica a idade do arquivo no momento em que find
foi iniciado.
A menos que você o execute em uma árvore de diretórios muito pequena, find
levará vários milissegundos (se não segundos ou horas) para rastrear a árvore de diretórios e fazer um lstat()
em cada arquivo. Portanto, ter uma precisão de menos de um segundo não faz necessariamente muito sentido.
Observe também que nem todos os sistemas de arquivos suportam carimbos de hora com granularidade de subsegundo.
Dito isto, existem algumas opções.
Com o find
de muitos BSDs e o de schily-tools
, você pode fazer:
find . -atime -1s
Para localizar arquivos que foram acessados pela última vez há menos de um segundo (comparado a quando o find
foi iniciado).
com zsh
:
ls -ld -- **/*(Dms-1)
Para granularidade de subsegundo, com ferramentas GNU, você pode usar um arquivo de referência cujo tempo de execução seja definido com touch
:
touch -ad '0.5 seconds ago' ../reference
find . -anewer ../reference
Ou com versões recentes de perl
:
perl -MTime::HiRes=lstat,clock_gettime -MFile::Find -le '
$start = clock_gettime(CLOCK_REALTIME) - 0.5;
find(
sub {
my @s = lstat $_;
print $File::Find::name if @s and $s[8] > $start
}, ".")'