Bash

stat:以“long-iso”格式列印時間

  • February 14, 2015

對於我的腳本,我希望有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

最簡單的方法是使用@don_crissti建議--printf的選項:

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

引用自:https://unix.stackexchange.com/questions/184814