从“stat”获取 mtime Epoch 时间戳(以毫秒为单位)

fin*_*oot 6 stat timestamps

如果我用来stat显示 mtime,我会得到一个以毫秒为单位的日期:

$ stat -c '%y' test.log 
2019-07-04 14:32:10.730059167 +0200
Run Code Online (Sandbox Code Playgroud)

但是,如果我想显示纪元时间戳,我将不再获得毫秒:

$ stat -c '%Y' test.log 
1562243530
Run Code Online (Sandbox Code Playgroud)

我是否遗漏了某些内容,或者我必须将两个输出的内容修补在一起?

ste*_*ver 7

对于 GNU Coreutils 实现,您可以使用

\n\n
stat --format='%.9Y' file\n
Run Code Online (Sandbox Code Playgroud)\n\n

要不就

\n\n
stat --format='%.Y' file\n
Run Code Online (Sandbox Code Playgroud)\n\n

info文档中:

\n\n
\n

\xe2\x80\x98%W\xe2\x80\x99、\xe2\x80\x98%X\xe2\x80\x99、\xe2\x80\x98%Y\xe2\x80\x99 和 \xe2\ x80\x98%Z\xe2\x80\x99 格式接受前面带句点的精度,以指定小数点后要打印的位数。例如,\xe2\x80\x98%.3X\xe2\x80\x99 将访问时间戳输出为毫秒精度。如果给出句点但没有精度,则 \xe2\x80\x98stat\xe2\x80\x99\n 使用 9 位数字,因此 \xe2\x80\x98%.X\xe2\x80\x99 相当于 \xe2\x80 \x98%.9X\xe2\x80\x99。当丢弃多余的精度时,时间戳会被截断为负无穷大。

\n
\n