stat:以“long-iso”格式打印时间

stat:以“long-iso”格式打印时间

对于我的脚本,我希望有stat命令以一种良好的、人类友好的方式打印时间:2015-02-04 00:48:31ls调用这种格式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

相关内容