Linuxでファイルのサイズや権限、所有者、更新日時などを詳しく調べたいときは、statコマンドを使用します。
ls -lでも基本的な情報は確認できますが、statコマンドではinode番号、ハードリンク数、割り当て済みブロック数、アクセス日時、状態変更日時、作成日時など、より詳細な情報をまとめて表示できます。
この記事では、Linux初心者でも実際に操作できるように、statコマンドの基本構文、出力項目の意味、ファイルやディレクトリの確認方法、シンボリックリンクの調べ方、表示形式を指定する方法まで実例付きで解説します。
statコマンドとは
statは、ファイルやディレクトリ、ファイルシステムの状態を表示するコマンドです。
ファイル名だけでは分からない次のような情報を確認できます。
- ファイルの種類
- ファイルサイズ
- ディスク上で使用しているブロック数
- アクセス権限
- 所有ユーザーと所有グループ
- inode番号
- ハードリンク数
- 最終アクセス日時
- 最終更新日時
- 状態変更日時
- 作成日時
ファイルの属性を詳しく確認したいときや、権限・所有者・更新日時に関するトラブルを調査するときに役立ちます。
statコマンドの基本構文
statコマンドの基本構文は次のとおりです。
stat [オプション] ファイルまたはディレクトリ
たとえば、sample.txtの詳細情報を確認する場合は、次のように実行します。
stat sample.txt
複数のファイルをまとめて確認することもできます。
stat file1.txt file2.txt file3.txt
指定した順番に、それぞれの詳細情報が表示されます。
ファイルの詳細情報を確認する方法
動作確認用のファイルを作成します。
echo "Hello Linux" > sample.txt
続いて、statコマンドを実行します。
stat sample.txt
実行結果の例は次のとおりです。
File: sample.txt
Size: 12 Blocks: 8 IO Block: 4096 regular file
Device: 8,1 Inode: 131126 Links: 1
Access: (0644/-rw-r--r--) Uid: (1000/user) Gid: (1000/user)
Access: 2026-07-16 10:00:00.000000000 +0900
Modify: 2026-07-16 10:00:00.000000000 +0900
Change: 2026-07-16 10:00:00.000000000 +0900
Birth: 2026-07-16 10:00:00.000000000 +0900
表示内容や配置は、LinuxディストリビューションやGNU Coreutilsのバージョン、ファイルシステムによって異なる場合があります。
statコマンドの出力項目の見方
File:ファイル名
File: sample.txt
指定したファイル名またはパスが表示されます。
Size:ファイルサイズ
Size: 12
ファイルサイズがバイト単位で表示されます。
Blocks:割り当て済みブロック数
Blocks: 8
ディスク上で実際に割り当てられているブロック数です。
IO Block:推奨I/Oサイズ
IO Block: 4096
ファイル入出力時に使用される推奨ブロックサイズです。
Inode:inode番号
Inode: 131126
Linuxがファイルを管理するためのinode番号です。
Links:ハードリンク数
Links: 1
同じinodeを参照しているハードリンク数です。
ハードリンクを追加すると値も増加します。
ln sample.txt hardlink.txt
stat sample.txt
表示例
Links: 2
Access:アクセス権限
Access: (0644/-rw-r--r--)
8進数表記と記号表記の両方でパーミッションが表示されます。
Uid・Gid
所有ユーザーと所有グループを確認できます。
Access・Modify・Change・Birthの違い
| 項目 | 意味 |
|---|---|
| Access(atime) | 最後に読み取られた日時 |
| Modify(mtime) | 内容を変更した日時 |
| Change(ctime) | 権限や所有者などinode情報を変更した日時 |
| Birth | ファイル作成日時(環境によっては表示されない) |
ctimeは作成日時ではありません。
権限変更や所有者変更など、inode情報が変更された日時です。
Accessの確認
cat sample.txt
ファイルを読み取るとAccessが更新される場合があります。
Modifyの確認
echo "追加" >> sample.txt
内容を書き換えるとModifyが更新されます。
Changeの確認
chmod 600 sample.txt
パーミッション変更でChangeが更新されます。
Birthについて
ファイルシステムによっては作成日時を保持していないため、Birth: -と表示される場合があります。
ディレクトリの詳細情報を確認する方法
statコマンドは、ファイルだけでなくディレクトリにも使用できます。
stat /var/log
実行結果では、ファイル種別として次のように表示されます。
directory
ディレクトリへ実行した場合に表示されるサイズは、ディレクトリ自身の情報です。
配下のファイルを含めた合計容量ではありません。
ディレクトリ全体の容量を確認したい場合は、duコマンドを使用します。
du -sh /var/log
シンボリックリンクの情報を確認する方法
通常のstatコマンドは、シンボリックリンク自体の情報を表示します。
echo "Linux" > original.txt
ln -s original.txt symbolic.txt
stat symbolic.txt
実行結果の例です。
File: symbolic.txt -> original.txt
Size: 12
File type: symbolic link
このとき表示されるSizeは、リンク先ファイルのサイズではなく、シンボリックリンクが保持しているパス文字列の長さです。
リンク先の実体を確認する
リンク先ファイルの情報を表示したい場合は、-Lオプションを使用します。
stat -L symbolic.txt
この場合はリンク先ファイルのサイズ、権限、inode番号などが表示されます。
必要な情報だけを表示する方法
シェルスクリプトや監視処理では、必要な情報だけ取得したいことがあります。
その場合は-cオプションを使用します。
stat -c '書式' sample.txt
ファイル名だけ表示する
stat -c '%n' sample.txt
サイズだけ表示する
stat -c '%s' sample.txt
数値のパーミッションだけ表示する
stat -c '%a' sample.txt
記号形式のパーミッションだけ表示する
stat -c '%A' sample.txt
所有ユーザーとグループを表示する
stat -c '%U %G' sample.txt
inode番号を表示する
stat -c '%i' sample.txt
ハードリンク数を表示する
stat -c '%h' sample.txt
更新日時を表示する
stat -c '%y' sample.txt
まとめて表示する
stat -c '名前=%n サイズ=%s 権限=%a 所有者=%U グループ=%G inode=%i 更新=%y' sample.txt
よく使う書式指定子
| 書式 | 意味 |
|---|---|
%n |
ファイル名 |
%N |
リンク先付きファイル名 |
%s |
ファイルサイズ |
%b |
割り当て済みブロック数 |
%F |
ファイル種別 |
%a |
数値パーミッション |
%A |
記号パーミッション |
%U |
所有ユーザー |
%G |
所有グループ |
%i |
inode番号 |
%h |
ハードリンク数 |
%x |
Access日時 |
%y |
Modify日時 |
%z |
Change日時 |
%w |
Birth日時 |
ファイルシステム情報を確認する方法
-fオプションを使用すると、ファイルではなくファイルシステム情報を表示できます。
stat -f sample.txt
主に確認できる情報は次のとおりです。
- ファイルシステムの種類
- ブロックサイズ
- 総ブロック数
- 空きブロック数
- inode総数
- 空きinode数
statコマンドの主なオプション
| オプション | 説明 |
|---|---|
-L |
リンク先を表示する |
-f |
ファイルシステム情報を表示する |
-c |
指定した項目だけ表示する |
--printf |
書式を細かく指定する |
-t |
1行形式で表示する |
statコマンドでよくあるエラー
No such file or directory
stat: cannot statx 'sample.txt': No such file or directory
指定したファイルが存在しません。
pwd
ls -l
現在のディレクトリとファイル名を確認してください。
Permission denied
stat: cannot statx '/path/to/file': Permission denied
対象ファイルへアクセスする権限がありません。
missing operand
stat: missing operand
ファイル名を指定せずに実行しています。
stat sample.txt
GNU版とBSD版の違い
この記事で紹介しているオプションはGNU版statを基準としています。
macOSなどBSD系OSでは利用できるオプションが異なる場合があります。
lsコマンドとの違い
| 比較項目 | ls -l | stat |
|---|---|---|
| 用途 | 一覧表示 | 詳細表示 |
| inode | -iで表示 | 通常表示 |
| タイムスタンプ | 一部のみ | 4種類表示 |
| 書式指定 | ほぼ不可 | -cで自由に指定可能 |
| ファイルシステム情報 | 不可 | -fで表示可能 |
一覧表示ならls、1つのファイルを詳しく調査するならstatが適しています。
よくある質問
statコマンドはファイルの内容も表示しますか?
いいえ。表示するのはサイズ、権限、所有者、inode、タイムスタンプなどの属性情報です。
ctimeは作成日時ですか?
違います。ctimeはinode情報が変更された日時です。
作成日時を確認するには?
Birthまたはstat -c '%w'で確認できます。ただし環境によっては取得できません。
ディレクトリ容量も表示できますか?
できません。容量確認にはdu -shを使用します。
シンボリックリンクのリンク先も確認できますか?
stat -Lでリンク先ファイルの情報を確認できます。
サイズだけ取得するには?
stat -c '%s' sample.txt
パーミッションだけ取得するには?
stat -c '%a' sample.txt
UbuntuでもCentOSでも使えますか?
はい。Ubuntu、Debian、CentOS Stream、Rocky Linux、AlmaLinuxなど一般的なLinuxで利用できます。
まとめ
statコマンドは、Linuxでファイルやディレクトリの詳細情報を確認するためのコマンドです。
stat ファイル名
リンク先を表示する場合は次のように実行します。
stat -L symbolic.txt
必要な項目だけ取得する場合は-cを使用します。
stat -c '%n %s %a %U %G %i %y' sample.txt
ファイルシステム情報を調査する場合は-fを使用します。
stat -f sample.txt
特にAccess、Modify、Change、Birthの違いを理解しておくことで、ファイルの状態変化を正確に把握できます。
ls -lより詳しい情報が必要な場面では、statコマンドを積極的に活用しましょう。




コメント