stat --formatオプションの使い方を完全ガイド!初心者でもわかるファイル情報のカスタム表示
生徒
「statコマンドって、ファイルの情報がたくさん表示されて見にくいです…。必要な情報だけ表示する方法はありますか?」
先生
「それなら、--formatオプションを使えば、自分で表示形式をカスタマイズできますよ。」
生徒
「えっ、そんなことができるんですか!?どんな風に使うんですか?」
先生
「それでは、--formatオプションの使い方を一緒に学んでいきましょう!」
1. statコマンドと--formatオプションとは?
stat(スタット)コマンドは、Linuxでファイルやディレクトリの詳細な情報を表示するコマンドです。ファイルサイズ、更新日時、アクセス権、オーナー、グループなどが一覧で表示されます。
ただし、表示される情報が多いため、初心者にはどこを見ればよいか分かりづらいことがあります。そんなときに便利なのが--formatオプションです。
--formatは、表示したい情報だけを選んで表示できるオプションで、同じ意味を持つ-cの別表記になります。つまりstat -cとstat --formatは同じ動作をします。
2. --formatオプションの基本的な使い方
たとえば、「ファイル名」と「サイズ」だけを表示したいときは、次のように書きます。
stat --format="%n %s" test.txt
test.txt 1024
%nはファイル名、%sはファイルサイズ(バイト)を表す書式指定子(しょしきしていし)です。
3. よく使う書式指定子の一覧
以下のような書式指定子を組み合わせて、自分の欲しい情報だけを表示できます。
%n:ファイル名%s:ファイルサイズ(バイト)%F:ファイルの種類(通常ファイル、ディレクトリなど)%A:アクセス権(記号形式)%a:アクセス権(数値形式)%U:所有者(ユーザー名)%G:所有グループ%y:最終更新日時
たとえば次のように書けば、ファイル名・所有者・更新日時を一行で表示できます。
stat --format="%n %U %y" test.txt
test.txt user1 2025-09-16 13:10:22.000000000 +0900
4. 日本語を混ぜて見やすくする
書式の中に日本語や改行を入れると、さらに分かりやすくなります。たとえば、次のように書くと見やすくなります。
stat --format="ファイル名: %n\nサイズ: %s バイト\n種類: %F" test.txt
ファイル名: test.txt
サイズ: 1024 バイト
種類: regular file
\nは「改行」を意味します。改行を入れることで、縦に整った見やすい形式になります。
5. 複数ファイルへの応用もできる
--formatオプションは、複数ファイルに対しても使えます。たとえば、拡張子.logのファイルサイズ一覧を表示したい場合は以下のようにします。
stat --format="%n,%s" *.log
app.log,2560
error.log,4096
カンマ区切り(CSV形式)で出力すれば、表計算ソフトにもコピーしやすくなります。
6. --formatと-cの違いは?
--formatと-cは、どちらも同じ機能を持っています。違いは表記の仕方だけです。
-c:短い書き方(ショートオプション)--format:長い書き方(ロングオプション)
どちらを使っても同じ結果になりますが、初心者には意味が分かりやすい--formatの方がおすすめです。
7. スクリプトや自動処理にも活用できる
--formatオプションで出力を制御すれば、シェルスクリプトでの処理も効率よくできます。たとえば、ファイルサイズが1000バイト以上かを調べるスクリプトはこう書けます。
size=$(stat --format="%s" test.txt)
if [ "$size" -ge 1000 ]; then
echo "ファイルサイズが1000バイト以上です"
fi
このように、数値だけを抽出して使えるのも--formatの大きなメリットです。
8. format指定の注意点
書式文字列を指定する際は、ダブルクオーテーション(")で囲むことを忘れないようにしましょう。特に\nなどの特殊文字を含む場合、クオートしないと意図しない動作になることがあります。
また、誤った書式指定子(存在しない%記号)を使うとエラーになるため、必ず正しいものを使いましょう。