日付を抽出する方法は、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 }'
テストを経てうまく機能しました