はじめに

こんにちは!今回はstatコマンドについて学んでいきましょう。

statは、ファイルやディレクトリの詳細な情報を表示するコマンドです。タイムスタンプ、inode番号、パーミッション、ファイルサイズなど、ファイルについて知りたいことがほぼ全部わかります。ls -lよりも詳しい情報が欲しい時に便利!

statコマンドとは

statコマンドは、指定したファイルやディレクトリの詳細な情報を表示する外部コマンドです。ファイルシステムに保存されたメタデータを表示し、アクセス時刻、変更時刻、チェンジ時刻などを見ることができます。

ファイルのinode情報を詳しく調べたい時や、タイムスタンプを正確に確認したい時に重宝します。

基本構文

1
stat [オプション] ファイル

複数のファイルを同時に指定することもできます。

主なオプション

オプション 説明
-L シンボリックリンク先の情報を表示
-f ファイルシステムの情報を表示
-c 指定したフォーマットで表示
-t タルト(terse)形式で表示

使用例

例1: 基本的な使い方(ファイルの詳細情報)

1
stat test.txt

実行結果:

1
2
3
4
5
6
7
8
  File: test.txt
  Size: 1234      Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d  Inode: 9876543    Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/  user)   Gid: ( 1000/  user)
Access: 2025-10-26 10:00:00.123456789 +0900
Modify: 2025-10-26 09:30:00.987654321 +0900
Change: 2025-10-26 09:30:00.987654321 +0900
 Birth: -

ファイルの詳細情報が表示されます。

例2: ディレクトリの情報

1
stat /home

実行結果:

1
2
3
4
5
6
7
8
  File: /home
  Size: 4096      Blocks: 8          IO Block: 4096   directory
Device: 801h/2049d  Inode: 1234567    Links: 5
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2025-10-26 10:00:00.000000000 +0900
Modify: 2025-10-26 09:00:00.000000000 +0900
Change: 2025-10-26 09:00:00.000000000 +0900
 Birth: -

ディレクトリの情報が表示されます。

例3: 複数ファイルの情報

1
stat file1.txt file2.txt

実行結果:

1
2
3
4
5
6
7
  File: file1.txt
  Size: 1234      Blocks: 8          IO Block: 4096   regular file
...

  File: file2.txt
  Size: 5678      Blocks: 16         IO Block: 4096   regular file
...

複数ファイルの情報が順に表示されます。

例4: シンボリックリンク先の情報(-Lオプション)

1
stat -L symlink.txt

実行結果:

1
2
3
  File: symlink.txt
  Size: 2048      Blocks: 8          IO Block: 4096   regular file
...

シンボリックリンク先のファイル情報が表示されます。

例5: ファイルシステムの情報(-fオプション)

1
stat -f /home

実行結果:

1
2
3
4
5
  File: "/home"
    ID: 801 Namelen: 255     Type: ext4
Block size: 4096       Fundamental block size: 4096
Blocks: Total: 500000  Free: 250000  Available: 200000
Inodes: Total: 128000  Free: 100000  Available: 100000

ファイルシステムの詳細情報が表示されます。

例6: タルス形式で表示(-tオプション)

1
stat -t test.txt

実行結果:

1
test.txt 1234 8 81a4 1000 1000 801 9876543 1 0 0 1698316800 1698315000 1698315000 0

1行のコンパクト形式で表示されます。

例7: カスタムフォーマットで表示(-cオプション)

1
stat -c '%n %s %a' test.txt

実行結果:

1
test.txt 1234 644

指定したフォーマット(ファイル名・サイズ・パーミッション)で表示されます。

例8: inode番号だけを表示

1
stat -c '%i' test.txt

実行結果:

1
9876543

inode番号だけが表示されます。

Tips・注意点

タイムスタンプの3種類

statコマンドで表示されるタイムスタンプには3種類あります:

  • Access (atime): ファイルが最後に読み込まれた時刻
  • Modify (mtime): ファイルの内容が最後に変更された時刻
  • Change (ctime): ファイルのメタデータが最後に変更された時刻

inode番号の確認

1
stat -c '%i' file.txt

ハードリンク調査やファイルシステム管理で inode 番号を確認する場合に便利。

パーミッションの読み方

表示される06440755は8進数表記です:

  • 0644: -rw-r--r--(通常ファイル)
  • 0755: drwxr-xr-x(ディレクトリ)

フォーマット指定子

-cオプションで使える主な指定子:

  • %n: ファイル名
  • %s: ファイルサイズ(バイト)
  • %b: 割り当てたブロック数
  • %a: アクセス権(8進数)
  • %u: ユーザーID
  • %g: グループID
  • %i: inode番号
  • %A: アクセス権(文字列形式)
  • %x: atime
  • %y: mtime
  • %z: ctime

実践的な使い方

ファイルの正確な更新時刻を確認

1
stat -c '%y' test.txt

ナノ秒単位で正確なタイムスタンプが表示されます。

最後にアクセスされた時刻を確認

1
stat -c 'アクセス時刻: %x' test.txt

ファイルが最後に読み込まれた時刻を確認できます。

ハードリンク数を確認

1
stat -c '%h' test.txt

ハードリンク数が表示されます。1なら他にハードリンクはありません。

ファイルシステムの容量を確認

1
stat -f /home | head -5

ファイルシステムの空き容量と使用量が確認できます。

複数ファイルのサイズをまとめて表示

1
stat -c '%n: %s bytes' *.txt

複数ファイルのサイズが見やすく表示されます。

まとめ

statコマンドのポイント:

  • ファイルの詳細情報を表示する外部コマンド
  • inode情報、パーミッション、タイムスタンプなどが確認できる
  • タイムスタンプは3種類(Access、Modify、Change)
  • -fオプションでファイルシステム情報も表示
  • -cオプションで指定したフォーマットで表示可能
  • ナノ秒単位で正確な時刻情報が得られる

statコマンドは、ファイルのメタデータを深く知りたい時に最強のツール。ls -lだけではわからないことがいっぱい見えてきます!