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 )
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
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.
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
...
Ou use o corte:
TIMESTAMP=$( stat -c "%y" $JARNAME.jar | cut -d. -f1 )
print $TIMESTAMP