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フォームパッケージのバージョンを使用していますcoreutils8.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

あるいは、GNUを使ってdate変換することもできます。

$ 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

関連情報