unix - コマンドリファレンス - ファイルの状態を表示 stat

 
1. stat ファイルの状態を表示
2.  主なオプション
3.  書式指定
4.  strftime の書式

1. stat ファイルの状態を表示

 理解するのがおっそろしく難しいコマンドで、まだよく理解できていません。  基本形は

> stat [オプション] ファイル名
  オプションなしで実行すると

> stat a.txt
109 4735894 -rw-r--r-- 1 hogehoge hogehoge 9482967 6 "Jan 27 11:17:15 2018" "Jan 27 11:36:46 2018" "Jan 27 11:36:46 2018" "Jan 27 11:17:15 2018" 32768 8 0 a.txt
 ちょっとわかりにくいです。

2. 主なオプション

オプション 意 味 備考
-f 指定したフォーマットを使用して情報を表示 3. 書式指定」参照
-t 標準ライブラリ strftime の書式で日時を表示 4. strftime の書式」参照
-x Linux 形式で表示


> stat -x a.txt
  File: "a.txt"
  Size: 6            FileType: Regular File
  Mode: (0644/-rw-r--r--)         Uid: ( 1001/hogehoge)  Gid: ( 1001/hogehoge)
Device: 0,109   Inode: 4735894    Links: 1
Access: Sat Jan 27 11:17:15 2018
Modify: Sat Jan 27 11:36:46 2018
Change: Sat Jan 27 11:36:46 2018
 こちらの方が分かりやすいです。

3. 書式指定

 表示したいものを示すシンボルとその書式を指定するらしいのですがこれが恐ろしく難しい・・・。  理解しないままに出力していますが %Sp で権限を表示します。

> stat -f "%Sp" a.txt
-rw-r--r--
 日付をあらわすのが amc で S と合わせて使います
指定 意 味
a 最終アクセス日時
m 更新日時
c 作成日時

 更新日付のみを出力するのと


> stat -f "%Sm"  a.txt
Jan 27 11:36:46 2018
 これを次項と組み合わせて

> stat -f "%Sm" -t "%Y年%m月%d日 %T" a.txt
2018年01月27日 11:36:46

4. strftime の書式

 わたしの使う主な書式のみ紹介します。
指定 書式 備考
%A 各国の表現で完全な曜日名
%a 各国の表現で省略した曜日名
%d 日を示す 10 進数 (01-31)
%H (24 時間時計で) 時間を示す 10 進数 (00-23)
%M 分を示す 10 進数 (00-59)
%m 月を示す 10 進数 (01-12)
%S 秒を示す 10 進数 (00-60)
%T %H:%M:%S と同等
%Y 百年紀付きの年を示す 10 進数


> stat -x -t "%Y年%m月%d日 %T" a.txt
  File: "a.txt"
  Size: 6            FileType: Regular File
  Mode: (0644/-rw-r--r--)         Uid: ( 1018/hogehoge)  Gid: ( 1018/hogehoge)
Device: 0,109   Inode: 4735894    Links: 1
Access: 2018年01月27日 11:17:15
Modify: 2018年01月27日 11:36:46
Change: 2018年01月27日 12:15:21
 てな感じです。