`stat`出力形式:切り捨て時間フィールド

`stat`出力形式:切り捨て時間フィールド

引用:`stat`出力形式:日付フィールドを切り捨てる

日付を抽出する方法は、statコマンドを使用することです。

stat -c '%.10y' file

私の最後のコマンドは次のとおりです。

stat -c "%y %i %A %n" *

時間だけ取得できるように '%y' を編集したいと思います。 「.11」ではなく、12から20の範囲を定義したいと思います。これを行う方法はありますか?このタイプの形式は何ですか?

デフォルトの時間は次のとおりです。

2021-06-19 13:46:30.201999800 +0530

しかし、私は欲しい:

13:46:30

最終出力:

13:46:29 11540474045615128 -rw-r--r-- __temp__
13:49:03 14918173767136212 -rw-r--r-- __TEM__.txt
13:46:29 9007199255101576 -rw-r--r-- bla.txt
13:49:58 1125899908323122 -rwxr-xr-x f.sh
13:46:30 1125899908323121 -rwxr-xr-x Q1 2.sh

答え1

zsh代わりに、いつでも組み込みコマンドを使用できますstat(GNU以前のコマンドですstat。システムごとに実装が異なり、互換性がなく、stat標準コマンドではないことに注意してください)。

#! /bin/zsh -
zmodload zsh/stat
for f (*(N)) {
  stat -F%T -LH s -- $f &&
    print -r $s[mtime] $s[inode] $s[mode] $f
}

答え2

日付と時刻のみを表示するように文字列形式を指定し、cutを使用して最初の列を削除できます。

stat -c '%.19y %i %A %n' * | cut -d' ' -f2-

編集:要求に応じてカットパラメータの説明を追加しました。

-d' '   ; use space character as field delimiter
-f2-    ; print field number 2 and continue to end of line 
          (aka delete first field/column in this case)

答え3

私は必要なものを得るためにawkを使用しました

 stat -c '%y %i %A %n' k |awk '{gsub(/^[0-9]*-[0-9]*-[0-9]* /,"",$0);$2="";gsub(/\..*/,"",$1);print }'

テストを経てうまく機能しました

関連情報