statコマンドとは?Linuxでファイルやディレクトリの詳細情報を確認する基本
生徒
「Linuxでファイルの詳しい情報を確認する方法ってありますか?」
先生
「Linuxではstatコマンドを使うと、ファイルやディレクトリの詳細な情報を簡単に確認できますよ。」
生徒
「それってls -lと何が違うんですか?」
先生
「とても良い質問です。実際に使いながら、違いや基本的な使い方を見てみましょう!」
1. statコマンドとは?
statコマンドは、LinuxやUnix系OSでファイルやディレクトリの詳細な情報を表示するためのコマンドです。具体的には、ファイルのサイズ、更新日時、所有者、アクセス権限、iノード番号など、さまざまな情報を一括で確認できます。
「ls -l」コマンドでもある程度の情報は見られますが、statコマンドの方がより詳しい情報を一覧で取得できるため、システム管理やファイルの調査にとても役立ちます。
2. 基本的な使い方
statコマンドの基本構文はとてもシンプルです。
stat ファイル名
例えば、「sample.txt」というファイルがある場合、その詳細を確認するには以下のように入力します。
stat sample.txt
File: sample.txt
Size: 1024 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 131074 Links: 1
Access: 2025-09-15 10:00:00.000000000 +0900
Modify: 2025-09-14 18:30:00.000000000 +0900
Change: 2025-09-14 18:30:00.000000000 +0900
Birth: -
このように、ファイルに関する様々な情報が一気に表示されます。
3. 表示される主な項目の意味
- Size: ファイルのサイズ(バイト単位)です。
- Blocks: ファイルが使っているディスクのブロック数。
- IO Block: 入出力時のブロック単位。
- File: ファイルの名前と種類(例:regular file=通常ファイル)。
- Inode: ファイルの一意な識別番号。
- Links: ハードリンクの数。
- Access: 最後にアクセスされた日時。
- Modify: 内容が最後に変更された日時。
- Change: メタデータ(属性情報)が最後に変更された日時。
これらの情報から、「いつ誰がファイルを触ったのか」や、「どのくらいのサイズがあるのか」など、ファイルの状態を詳細に知ることができます。
4. ディレクトリの情報を確認する
ファイルだけでなく、ディレクトリに対してもstatコマンドは使えます。
stat Documents
File: Documents
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 802h/2050d Inode: 131075 Links: 3
Access: 2025-09-15 10:15:00.000000000 +0900
Modify: 2025-09-14 20:00:00.000000000 +0900
Change: 2025-09-14 20:00:00.000000000 +0900
Birth: -
「directory」と表示されていることから、この対象がディレクトリであると分かります。lsコマンドでは分からないようなディレクトリの詳細も確認できます。
5. オプションを使って表示内容をカスタマイズ
statコマンドにはいくつか便利なオプションもあります。
■ --format(または -c)
特定の情報だけを表示したいときは、--formatオプションを使います。
stat --format="%s %n" sample.txt
1024 sample.txt
この例では、「サイズ(%s)」と「ファイル名(%n)」だけを表示しています。
■ --printf
--printfオプションを使えば、表示内容をより細かくカスタマイズできます。
stat --printf="名前: %n\nサイズ: %s バイト\n" sample.txt
名前: sample.txt
サイズ: 1024 バイト
6. ls -lとの違いは?
ls -lコマンドでもファイルの情報は見られますが、statのほうが情報量が多く、アクセス時刻・変更時刻・iノードなども表示されます。ログ調査やファイルの問題を追跡する際には、statの方が便利です。
以下はls -lの例です。
ls -l sample.txt
-rw-r--r-- 1 user user 1024 Sep 14 18:30 sample.txt
一方でstatでは、時間情報が秒単位で出たり、iノード番号などの詳細が見えるため、用途によって使い分けましょう。
7. よくある用途や活用例
- ファイルが「いつ」変更されたかを確認する
- 誰が所有者かを調べたいとき
- ディスクのブロック単位の使用状況を知りたいとき
- iノード番号を調べて、ハードリンクの関係性を確認したいとき
特にシステム管理や障害調査、バックアップスクリプトの作成など、中上級者向けの用途にも活用できる基本コマンドです。
まとめ
ここまで、Linuxでファイルやディレクトリの詳細情報を確認できるstatコマンドについて、基本的な使い方から実践的な活用方法までを詳しく解説してきました。statコマンドは、単にファイルが存在するかどうかを確認するだけでなく、ファイルの状態や履歴、属性を深く理解するための重要なLinuxコマンドです。
Linuxでは、ファイルやディレクトリに関する情報がすべてiノードという仕組みで管理されています。statコマンドを使うことで、このiノード番号をはじめ、ファイルサイズ、ブロック数、リンク数、アクセス権、所有者、そして各種タイムスタンプを一度に確認できます。これは、ls -lコマンドでは把握しきれない情報であり、Linuxの内部構造を理解するうえで非常に価値のある知識です。
特に重要なのが、Access、Modify、Changeという三つの時刻情報です。Accessはファイルが最後に読み取られた時刻、Modifyは内容が変更された時刻、Changeは権限や所有者などのメタデータが変更された時刻を示します。これらを正しく読み取れるようになると、「いつ内容が変わったのか」「いつ参照されたのか」「設定が変更されたのはいつか」といった調査が可能になり、トラブルシューティングやログ解析に大きく役立ちます。
statコマンドはディレクトリにも使える点も大きな特徴です。ディレクトリ自体もLinuxでは一つのファイルとして扱われているため、statを使えばディレクトリのサイズやリンク数、更新日時などを確認できます。ディレクトリのリンク数を見ることで、サブディレクトリ構造の理解にもつながり、Linuxのファイルシステムに対する理解が一段と深まります。
また、--formatや--printfオプションを使えば、statの出力内容を必要な情報だけに絞り込むことができます。これは、シェルスクリプトや自動化処理でstatを使う場合に非常に便利です。たとえば、ファイルサイズや更新日時だけを取得して条件分岐に使うなど、実務に直結する使い方も可能になります。
以下は、一般ユーザーでstatコマンドを使い、ファイルのサイズと更新日時を確認するシンプルな例です。
stat sample.txt
File: sample.txt
Size: 1024 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 131074 Links: 1
Access: 2025-09-15 10:00:00.000000000 +0900
Modify: 2025-09-14 18:30:00.000000000 +0900
Change: 2025-09-14 18:30:00.000000000 +0900
Birth: -
この出力から、ファイルのサイズや種類だけでなく、「いつアクセスされ、いつ内容が変更されたのか」を正確に把握できます。Linuxでファイルの挙動に違和感を感じたとき、まずstatで状態を確認するという流れを覚えておくと、問題解決がスムーズになります。
statコマンドは、初心者には少し情報量が多く感じられるかもしれませんが、慣れてくると非常に頼りになる存在です。lsコマンドと使い分けながら、必要な場面でstatを使えるようになることで、Linux操作の理解度と作業効率は確実に向上します。
生徒「statコマンドって、lsよりもずっと詳しい情報が見られるんですね。時間の違いが特に印象に残りました。」
先生「そうですね。Access、Modify、Changeの違いが分かるようになると、Linuxのファイル管理が一気に理解しやすくなりますよ。」
生徒「iノード番号まで確認できるのは知りませんでした。ファイルの仕組みが少し分かった気がします。」
先生「良い気づきです。statはLinuxの内部構造を知るための入り口でもあります。」
生徒「これからは、ファイルに問題があったらまずstatで状態を確認してみます。」
先生「その習慣はとても大切ですね。statを使いこなせるようになると、Linux操作が一段レベルアップしますよ。」