statコマンドとは?Linuxでファイル・ディレクトリの詳細情報を確認する方法

Linux

Linuxでファイルのサイズや権限、所有者、更新日時などを詳しく調べたいときは、statコマンドを使用します。

ls -lでも基本的な情報は確認できますが、statコマンドではinode番号、ハードリンク数、割り当て済みブロック数、アクセス日時、状態変更日時、作成日時など、より詳細な情報をまとめて表示できます。

この記事では、Linux初心者でも実際に操作できるように、statコマンドの基本構文、出力項目の意味、ファイルやディレクトリの確認方法、シンボリックリンクの調べ方、表示形式を指定する方法まで実例付きで解説します。

  1. statコマンドとは
  2. statコマンドの基本構文
  3. ファイルの詳細情報を確認する方法
  4. statコマンドの出力項目の見方
    1. File:ファイル名
    2. Size:ファイルサイズ
    3. Blocks:割り当て済みブロック数
    4. IO Block:推奨I/Oサイズ
    5. Inode:inode番号
    6. Links:ハードリンク数
    7. Access:アクセス権限
    8. Uid・Gid
  5. Access・Modify・Change・Birthの違い
    1. Accessの確認
    2. Modifyの確認
    3. Changeの確認
    4. Birthについて
  6. ディレクトリの詳細情報を確認する方法
  7. シンボリックリンクの情報を確認する方法
    1. リンク先の実体を確認する
  8. 必要な情報だけを表示する方法
    1. ファイル名だけ表示する
    2. サイズだけ表示する
    3. 数値のパーミッションだけ表示する
    4. 記号形式のパーミッションだけ表示する
    5. 所有ユーザーとグループを表示する
    6. inode番号を表示する
    7. ハードリンク数を表示する
    8. 更新日時を表示する
    9. まとめて表示する
  9. よく使う書式指定子
  10. ファイルシステム情報を確認する方法
  11. statコマンドの主なオプション
  12. statコマンドでよくあるエラー
    1. No such file or directory
    2. Permission denied
    3. missing operand
    4. GNU版とBSD版の違い
  13. lsコマンドとの違い
  14. よくある質問
    1. statコマンドはファイルの内容も表示しますか?
    2. ctimeは作成日時ですか?
    3. 作成日時を確認するには?
    4. ディレクトリ容量も表示できますか?
    5. シンボリックリンクのリンク先も確認できますか?
    6. サイズだけ取得するには?
    7. パーミッションだけ取得するには?
    8. UbuntuでもCentOSでも使えますか?
  15. まとめ

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コマンドを積極的に活用しましょう。

コメント

タイトルとURLをコピーしました