A ferramenta stat do GNU coreutils foi alterada?

3

A versão coreutils (8.6) do GNU de stat foi alterada? Após uma atualização recente, alguns scripts que eu escrevi esse stat de chamada não estão funcionando conforme o esperado; em particular, eu estava usando stat -c %Y "${filename}" . Isto é suposto para retornar o tempo da última modificação na forma de segundos desde "Epoch". No entanto, eu poderia jurar que isso costumava tomar a forma de um inteiro inteiro. No entanto, agora estou obtendo a saída disso no formulário 1287630625.956667227 em vez de 1287630625 . Como o Bash não pode lidar com a aritmética de ponto flutuante, isso é um pouco chato. Isto é uma mudança deliberada? Ou um bug? Ou minha memória ficou confusa? Tentei pesquisar informações sobre isso, mas não consegui encontrar nada.

    
por frabjous 21.10.2010 / 06:30

2 respostas

10

stat: os timestamps de impressão para a resolução completa estavam comprometidos com o coreutils- 8.6.

$ git clone git://git.savannah.gnu.org/coreutils.git
$ cd coreutils
$ git log -1 --grep=time -- src/stat.c
commit 9069af45e691d1252c727da66aa4f3f3c7f1ea29
Author: Eric Blake 
Date:   Thu Sep 30 16:42:13 2010 -0600

    stat: print timestamps to full resolution

    * src/stat.c (epoch_time): New function.
    (print_stat): Use it for %[WXYZ].
    * NEWS: Document this.
    * tests/touch/60-seconds: Adjust test to match.
    * tests/misc/stat-birthtime: Likewise.
$ git describe --contains 9069af4
v8.6~29
    
por 21.10.2010 / 08:04
5

Isso foi desnecessariamente prejudicial e foi revertido para coreutils8.7 .
Desde então, você precisa especificar %.Y etc para obter a parte fracionária incluída

    
por 26.02.2014 / 03:24