对于我的脚本,我希望有stat
命令以一种良好的、人类友好的方式打印时间:2015-02-04 00:48:31
。ls
调用这种格式long-iso
,它可以像这样使用:
$ ls -lA --time-style=long-iso .bashrc
-rw------- 1 michael michael 5740 2015-02-04 00:48 .bashrc
然而,没有这样的开关stat
。 “人类可读时间”的选项%y
如下所示:
$ stat -c'%A %h %U %G %s %y %n' .bashrc
-rw------- 1 michael michael 5740 2015-02-04 00:48:31.160827516 +0100 .bashrc
有没有简单的方法可以使stat
打印时间为“long-iso”格式?
我需要使用stat
而不是ls
因为我需要调整打印哪些列(属性)以及打印顺序。
我在 Debian 上使用stat
表单包coreutils
版本。8.13-3.5
答案1
最简单的方法是使用--printf
选项按照建议通过@don_crissti:
stat --printf='%A %h %U %G %s %.16y %n\n' .bashrc
如果出于某种原因你不能这样做,你可以解析 `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
或者你可以使用 GNUdate
来转换它:
$ 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