Linuxのstatコマンド徹底解説:ファイルの詳細情報を一発で確認する方法

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 -lstat
サイズ
パーミッション
アクセス日時×
更新日時
状態変更日時×
ハードリンク数
デバイスID・Inode×

つまり、statはより詳細な内部情報を提供してくれる点で優れています。


実践:トラブルシュートでの活用例

「ファイルを変更していないのに日時が変わっている?」

このようなケースでは、statで以下を確認することで原因を特定できます:

  • Modify(内容の更新)
  • Change(状態の更新)

状態の更新は、chmodchownなどで変更されることがあります。
これにより、なぜ「更新されたことになっているのか」が明確になります。


スクリプトでの自動取得に活用

バックアップスクリプトやファイル監視システムでは、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を取り入れてみてください。

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