Como cortar uma string de data / timestamp?

4

Então estou usando

 TIMESTAMP=$( stat -c "%y" $JARNAME.jar )
 print $TIMESTAMP

e sua saída é algo como 2015-04-24 17:23:03.000000000 -0500

Eu preciso apenas da 2015-04-24 17:23:03 part

    
por Philip Morris 01.06.2015 / 20:10

5 respostas

11

Como você parece estar usando a versão do Linux de stat(1) , suponho que você também tenha a versão coreutils do date(1) :

TIMESTAMP=$( date +'%Y-%m-%d %H:%M:%S' -r "$JARNAME".jar )
    
por 01.06.2015 / 20:21
6

Com GNU stat , você poderia simplesmente usar o modificador de ponto 1 (largura de campo +) entre o% introdutório e o caractere que especifica o formato por exemplo stat --printf "%.19y" filename , portanto, no seu caso:

TIMESTAMP=$(stat -c "%.19y" infile)

Com BSD/OSX stat , você pode usar as opções -f ( formato ) e -t ( timefmt ):

TIMESTAMP=$(stat -f '%Sm' -t '%Y-%m-%d %H:%M:%S' infile)

1
dot: junto com uma largura de campo, o campo não é expandido quando o texto é mais longo, mas o texto é truncado.

    
por 01.06.2015 / 20:34
4

Tente isso com Expansão de Parâmetros :

echo "${TIMESTAMP%.*}"

Saída:

2015-04-24 17:23:03
    
por 01.06.2015 / 20:14
2

O date format %Y-%m-%d %H:%M:%S usado na resposta do lcd047s pode ser simplificado para apenas %F %T :

TIMESTAMP=$( date +'%F %T' -r "$JARNAME".jar )

De man date :

FORMAT controls the output.  Interpreted sequences are:
...  
%F     full date; same as %Y-%m-%d
...  
%T     time; same as %H:%M:%S
...
    
por 02.06.2015 / 05:45
0

Ou use o corte:

TIMESTAMP=$( stat -c "%y" $JARNAME.jar | cut -d. -f1 )
print $TIMESTAMP
    
por 02.06.2015 / 02:47

Tags