LinuxLinux [リナックス / ライナックス]オープンソースのOSカーネルでファイルやディレクトリの詳細な情報を確認したい場合、通常は ls -l コマンドを使用することが多いでしょう。しかし、ls -l では確認できないさらに細かい情報(正確なタイムスタンプ、iノード番号、ブロックサイズなど)を知りたいときに便利なのが stat コマンドです。
本記事では、stat コマンドの基本的な使い方から、出力結果の見方、便利なフォーマット指定オプションについてわかりやすく解説します。
statコマンドとは?
stat コマンドは、ファイルやファイルシステムの状態(status)を詳細に表示するコマンドです。
ファイルのサイズや所有者、アクセス権限だけでなく、「いつ作成・アクセス・更新されたか」というタイムスタンプ情報や、ディスク上のブロック情報など、ファイルシステムレベルの細かな属性情報を一目で確認することができます。
statコマンドの基本的な使い方
ターミナルで stat コマンドの後に、詳細を確認したいファイルやディレクトリのパスを指定します。
stat [オプション] [ファイル名/ディレクトリ名]ファイルの詳細情報を表示する
例えば、sample.txt というファイルの詳細情報を表示する場合は以下のように実行します。
stat sample.txt実行すると、以下のような詳細情報が出力されます。
File: sample.txt Size: 1024 Blocks: 8 IO Block: 4096 regular fileDevice: fd01h/64769d Inode: 1234567 Links: 1Access: (0644/-rw-r--r--) Uid: ( 1000/ user) Gid: ( 1000/ user)Access: 2026-08-15 10:00:00.000000000 +0900Modify: 2026-08-14 15:30:00.000000000 +0900Change: 2026-08-14 15:30:00.000000000 +0900 Birth: -出力結果の見方
出力される各項目の意味は以下の通りです。
- File: ファイル名またはディレクトリ名。
- Size: ファイルのサイズ(バイト単位)。
- Blocks: ファイルに割り当てられているディスクブロック数。
- IO Block: ファイルシステムのI/Oブロックサイズ。
- ファイルの種類: 上記の例では
regular file(通常のファイル)。ディレクトリの場合はdirectoryとなります。 - Device: ファイルが存在するデバイス番号。
- Inode: iノード(inode)番号。ファイルシステム内でファイルを一意に識別するための番号です。
- Links: ハードリンクの数。
- Access: アクセス権限(パーミッション)。8進数表記(
0644など)とシンボリック表記(-rw-r--r--など)の両方が表示されます。 - Uid / Gid: 所有者のユーザーID・名前と、グループID・名前。
3つの重要なタイムスタンプ
stat コマンドでは、ファイルに関する重要なタイムスタンプを秒以下の精度で確認できます。
- Access(アクセス日時 - atime): ファイルの内容が最後に「読み込まれた」日時。
- Modify(更新日時 - mtime):
ファイルの内容が最後に「変更された」日時。(
ls -lで表示されるのは基本的にこの日時です) - Change(状態変更日時 - ctime): ファイルの内容、または属性(権限や所有者など)が最後に「変更された」日時。
- Birth(作成日時 - btime):
ファイルが作成された日時。※比較的新しい
statコマンド(GNU coreutils 8.32以降など)や、ext4などの対応ファイルシステム、十分新しいカーネル環境でのみサポートされています。未対応の古い環境では、-(ハイフン)と表示されるか、あるいは「Birth」の行自体が出力されません。
よく使う便利なオプション
※注意:macOSmacOS [マックオーエス]Appleが開発するMac用のオペレーティングシステム(BSD版)との違いについて
本記事はLinux(GNU版)のstatコマンドを対象としています。macOS(BSD版)のstatコマンドでは、後述する-fがフォーマット指定に使われ、-cオプションが使えない(エラーになる)など、オプションの挙動が大きく異なりますのでご注意ください。
stat コマンドには、出力内容をカスタマイズできる便利なオプションがあります。
-c(—format):必要な情報だけを抽出する
スクリプトなどで特定の情報だけを取り出したい場合は、-c(または --format)オプションを使用します。フォーマット指定子を使って、出力形式を自由に定義できます。
stat -c "サイズ: %s バイト, 権限: %a" sample.txtサイズ: 1024 バイト, 権限: 644【よく使うフォーマット指定子】
%n: ファイル名%s: ファイルサイズ(バイト)%a: 8進数表記のアクセス権限(例: 644)。※本来はファイルタイプビットを含まない権限のみを返します(一部バージョンでは#フラグなどを利用してファイルタイプ込みの表示も可能)。%A: シンボリック表記のアクセス権限(例: -rw-r—r—)%U: 所有者のユーザー名%G: 所有者のグループ名%x: アクセス日時%y: 更新日時%z: 状態変更日時
-f(—file-system):ファイルシステムの状態を表示する
ファイルそのものではなく、そのファイルが存在する「ファイルシステム(ディスク・パーティション)」全体の状態を確認したい場合は -f オプションを使います。
stat -f / File: "/" ID: 10000000000 Namelen: 255 Type: ext2/ext3Block size: 4096 Fundamental block size: 4096Blocks: Total: 12345678 Free: 8765432 Available: 8000000Inodes: Total: 1234567 Free: 1000000このコマンドにより、ファイルシステムのブロックサイズや、空き容量、使用可能なiノード数などを確認できます。
まとめ
stat コマンドのポイントは以下の通りです。
- ファイルやディレクトリの詳細な状態を表示するコマンド。
ls -lよりも詳細な情報(iノード番号、8進数のパーミッション、秒以下のタイムスタンプなど)を一目で確認できる。- 特に Access(アクセス) / Modify(内容の更新) / Change(属性の変更) の3つのタイムスタンプを正確に知りたい場合に重宝する。
-cオプションを使えば、欲しい情報だけをフォーマット指定して抽出できるため、シェルスクリプトにも組み込みやすい。
ファイルのトラブルシューティングや、細かい属性情報の確認が必要になった際は、ぜひ stat コマンドを活用してみてください。
以上で本記事の解説を終わります。
よいITライフを!
人気記事
- 1
- 2
- 3
- 4
- 5
Rocky Linux対応。実際にWebサーバーを公開するまでのプロセスを体験できる、最も確実で実践的なガイドブックです。