stat: tempo de impressão no formato “long-iso”

6

Para o meu script, eu gostaria de ter o comando stat para imprimir o horário de uma maneira agradável e humana: 2015-02-04 00:48:31 . ls chama este formato long-iso e pode ser usado assim:

$ ls -lA --time-style=long-iso .bashrc 
-rw------- 1 michael michael 5740 2015-02-04 00:48 .bashrc

No entanto, não existe esse comutador para stat . A opção %y para "hora de leitura humana" é assim:

$ stat -c'%A %h %U %G %s %y %n' .bashrc
-rw------- 1 michael michael 5740 2015-02-04 00:48:31.160827516 +0100 .bashrc

Existe alguma maneira simples de tornar stat tempo de impressão no formato "long-iso"?

Eu preciso usar stat em vez de ls porque preciso ajustar quais colunas (atributos) são impressas e em qual ordem.

Estou usando o stat form package coreutils verssion 8.13-3.5 no Debian.

    
por Michael Boies 14.02.2015 / 10:59

1 resposta

4

A maneira mais simples é usar a opção --printf como sugerido por @don_crissti:

stat --printf='%A %h %U %G %s %.16y %n\n' .bashrc

Se, por alguma razão, você não puder fazer isso, você pode analisar a saída de 'stat -c'% y ':

$ stat -c'%A %h %U %G %s %y %n' .bashrc | awk '{$7=substr($7,1,8); $8=""}1;'
-rw-r--r-- 1 terdon terdon 9737 2015-02-01 18:12:18  .bashrc

Ou você pode usar o GNU date para convertê-lo:

$ date -d "2015-02-01 18:12:18.665916181 +0200"
Sun Feb  1 19:52:18 EET 2015
$ date -d "2015-02-01 18:12:18.665916181 +020" +"%F %R:%S"
2015-02-01 19:52:18
    
por 13.04.2017 / 14:36

Tags