Linuxでファイルの詳細情報を確認したいとき、どのコマンドを使っていますか?
多くの方はls -l
などを使っているかもしれませんが、実はstat
コマンドを使えば、より詳しく正確な情報を簡単に取得することができます。ファイルのサイズ、アクセス日時、所有者、パーミッション、デバイス情報など、ファイルに関するあらゆるメタデータを一括で表示してくれる便利なツールです。
この記事では、stat
コマンドの基本的な使い方からオプションの活用法、実践的な使用例までをわかりやすく解説します。Linux初心者はもちろん、日々の作業を効率化したい中級者にも役立つ内容です。
statコマンドとは?
stat
は、LinuxやUnix系OSで利用できるコマンドで、ファイルやディレクトリの詳細な情報を表示するために使用されます。
例えば、以下のような情報が得られます:
- ファイル名
- サイズ(バイト数)
- 最終アクセス日時
- 最終更新日時
- 最終状態変更日時
- オーナーとグループ
- パーミッション(アクセス権)
- デバイスID
このような情報は、ファイルの状態確認やトラブルシュートの際に非常に役立ちます。
基本的な使い方
最もシンプルな使い方は、以下の形式です:
bashコピーする編集するstat ファイル名
例:
stat example.txt
このコマンドを実行すると、以下のような出力が得られます:
File: example.txt
Size: 1234 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 523123 Links: 1
Access: 2025-03-30 10:15:00.000000000 +0900
Modify: 2025-03-29 22:30:00.000000000 +0900
Change: 2025-03-29 22:35:00.000000000 +0900
Birth: -
各項目の意味
出力結果の各項目を詳しく見ていきましょう。
File
対象ファイルの名前です。
Size
ファイルのサイズ(バイト単位)です。
Blocks
ファイルがディスク上で占めているブロック数。実際のファイルサイズと異なる場合があります。
IO Block
ファイルのI/Oブロックサイズ(デフォルトは4096バイト)。
File type
ファイルの種類(regular file、directory、symbolic linkなど)。
Device
ファイルが存在するデバイスのID。
Inode
ファイルのi-node番号。ファイルシステム上で一意の識別子です。
Links
ハードリンクの数を示します。
Access
ファイルが最後にアクセスされた日時。
Modify
ファイルの内容が最後に変更された日時。
Change
ファイルの状態(パーミッションやオーナー情報など)が最後に変更された日時。
Birth
ファイルが作成された日時。ファイルシステムにより未サポートの場合があります。
statコマンドのオプション活用
フォーマット指定(-cオプション)
-c
(または--format
)オプションを使えば、出力をカスタマイズできます。
stat -c "%s bytes" example.txt
上記は、ファイルサイズのみを表示します。
使える主な書式指定子には以下のようなものがあります:
%n
:ファイル名%s
:ファイルサイズ%U
:オーナー名%G
:グループ名%A
:アクセス権(ls形式)%y
:最終変更日時
複数ファイルの情報を表示
stat file1.txt file2.txt
複数のファイルを一度に調べたい場合に便利です。
よく使うフォーマット例
ファイル名とサイズだけを取得
stat -c "%n: %s bytes" *.txt
アクセス権とオーナー・グループを確認
stat -c "%A %U %G %n" *.log
スクリプトで使いやすい形式に
stat -c "%n,%s,%y" *.csv > files_report.csv
CSV形式でファイル情報をまとめて記録する際にも重宝します。
statとls -lの違いとは?
ls -l
もファイルの詳細情報を表示するコマンドですが、表示内容に差があります。
以下のような違いがあります。
項目 | ls -l | stat |
---|---|---|
サイズ | ○ | ○ |
パーミッション | ○ | ○ |
アクセス日時 | × | ○ |
更新日時 | ○ | ○ |
状態変更日時 | × | ○ |
ハードリンク数 | ○ | ○ |
デバイスID・Inode | × | ○ |
つまり、stat
はより詳細な内部情報を提供してくれる点で優れています。
実践:トラブルシュートでの活用例
「ファイルを変更していないのに日時が変わっている?」
このようなケースでは、stat
で以下を確認することで原因を特定できます:
- Modify(内容の更新)
- Change(状態の更新)
状態の更新は、chmod
やchown
などで変更されることがあります。
これにより、なぜ「更新されたことになっているのか」が明確になります。
スクリプトでの自動取得に活用
バックアップスクリプトやファイル監視システムでは、stat
を使って状態変化を検出することが可能です。
例:ファイルが24時間以内に更新されたかを判定
if [ $(find myfile.txt -mtime -1) ]; then
echo "myfile.txt was modified in the last 24 hours"
fi
ここでstat
を使えば、より正確な時刻比較ができます。
まとめ
stat
コマンドは、Linuxのファイル情報を詳細に把握できる非常に強力なツールです。
普段はあまり意識されないかもしれませんが、ls
だけでは得られないアクセス日時や状態変更日時などを確認できることで、システム管理やトラブル対応時に非常に役立ちます。
コマンドの使い方に慣れてくると、出力形式を柔軟にカスタマイズしたり、スクリプトと組み合わせてファイル監視を行ったりと、活用の幅もぐんと広がります。
今後のLinux操作の効率化に、ぜひstat
を取り入れてみてください。