stat -cオプションの使い方を徹底解説!Linuxで出力フォーマットを自由に指定しよう
生徒
「statコマンドで表示される情報って多すぎて見づらいです…。必要な部分だけ表示できませんか?」
先生
「そのときに便利なのが、-cオプションです!出力内容を好きな形式で指定できるんですよ。」
生徒
「えっ、そんなことができるんですか!?使い方を教えてください!」
先生
「それでは、stat -cの基本から応用まで一緒に見ていきましょう!」
1. statコマンドとは?ファイルのステータスを確認する基本
stat(スタット)コマンドは、Linuxにおいてファイルやディレクトリの「詳細な状態(ステータス)」を表示するための強力なツールです。プログラミング未経験の方には「ファイルの健康診断書」のようなものだとイメージすると分かりやすいでしょう。
通常、ファイルを確認する際はlsコマンドを使いますが、statを使えば、ファイルサイズや更新日時だけでなく、システムの内部管理番号である「iノード番号」や、詳細な「タイムスタンプ(アクセス・更新・変更)」など、より専門的な情報を一目で確認できます。
ls -lで見える情報はごく一部です。statを使えば、そのファイルがいつ作られ、最後に誰が触れたのかという「裏側の情報」まで丸見えになります。
まずは、一番シンプルな実行例を見てみましょう。引数に調べたいファイル名を指定するだけでOKです。
stat test.txt
File: test.txt
Size: 1024 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 123456 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ user) Gid: ( 1000/ user)
Access: 2026-02-04 08:00:00.000000000 +0900
Modify: 2026-02-04 08:30:00.000000000 +0900
Change: 2026-02-04 08:30:00.000000000 +0900
Birth: -
このように、一度の実行で膨大なデータが表示されます。しかし、情報が多すぎて「特定の数値だけを抽出して自動化に使いたい」といった場合には、少し見づらく感じてしまうかもしれません。そこで活躍するのが、今回詳しく解説する-cオプションです。
2. -cオプションで出力フォーマットを指定しよう
-c(または--format)オプションを使うことで、表示したい情報だけをカスタマイズして出力することができます。これは「書式指定子(フォーマット指定)」と呼ばれる記号を使って出力形式を定義する仕組みです。
たとえば、ファイル名とファイルサイズだけを表示したいときは次のように書きます。
stat -c "%n %s" test.txt
test.txt 1024
ここで使われている%nは「ファイル名」、%sは「ファイルサイズ(バイト単位)」を意味します。
3. よく使うフォーマット指定子まとめ
ここでは、初心者が覚えておくと便利な代表的な書式指定子を紹介します。
%n:ファイル名%s:ファイルサイズ(バイト)%F:ファイルの種類(regular file、directoryなど)%a:アクセス権(8進数)%A:アクセス権(記号表記)%U:所有者(ユーザー名)%G:所有グループ%y:最終更新時刻
たとえば、「ファイル名、ファイルの種類、アクセス権(記号)、所有者、サイズ」を一行で表示したい場合は次のように書きます。
stat -c "%n %F %A %U %s" test.txt
test.txt regular file -rw-r--r-- user 1024
4. 改行やスペースの調整も自由自在
-cオプションの書式は文字列なので、途中にスペースや改行記号(\n)を入れることで、出力の見た目を自由に調整できます。
stat -c "ファイル名: %n\nサイズ: %s バイト\n更新日時: %y" test.txt
ファイル名: test.txt
サイズ: 1024 バイト
更新日時: 2024-09-15 10:15:30.123456789 +0900
このように、日本語を混ぜた出力にすることで、スクリプトやレポート作成時にも便利です。
5. 複数ファイルにも使える
stat -cは、複数のファイルに対して一括で情報を取得することもできます。
stat -c "%n,%s" *.txt
file1.txt,2048
file2.txt,1024
file3.txt,512
このように、CSV形式で出力すれば、Excelなどに貼り付けるのも簡単です。
6. statとlsの違いを知っておこう
「ファイルの詳細を確認する」といえばls -lを思い浮かべる人も多いかもしれません。たしかにlsコマンドも便利ですが、以下のような違いがあります。
lsは一覧表示が得意。内容は固定。statは詳細で正確な情報が見られる。-cでフォーマット自由自在。
つまり、「一覧でざっくり確認」はls、「正確に必要な情報をピンポイントで取得」はstatが得意ということです。
7. スクリプトで使うときにも便利
シェルスクリプトなどでファイルのサイズを取得して条件分岐するような処理を書くとき、stat -cは非常に有用です。たとえば次のようなスクリプトが考えられます。
size=$(stat -c "%s" test.txt)
if [ "$size" -gt 1000 ]; then
echo "ファイルサイズが1000バイトを超えています"
fi
stat -cで得られた情報は変数として扱えるため、処理の自動化にもぴったりです。
8. 書式に関する注意点
フォーマット内にスペースや記号を含めたい場合は、必ず全体をダブルクオーテーション(")で囲みましょう。また、複数のファイルを対象にするときはワイルドカード(*.txt)を使うと便利です。
なお、%の後に無効な文字を使うとエラーになりますので注意してください。