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オプションで出力フォーマットを指定しよう
statコマンドの真骨頂とも言えるのが、この-c(または--format)オプションです。標準の出力では情報が多すぎて「結局どこを見ればいいの?」と迷ってしまうことがありますが、このオプションを使えば、必要な情報だけを「つまみ食い」して表示できます。
これは「書式指定子(フォーマット指定)」と呼ばれる、特定のアルファベットに%を付けた記号を組み合わせて使います。まるで、あらかじめ用意されたスタンプを押していくような感覚で、自分好みのレポート形式を作成できる仕組みです。
プログラミングの知識がなくても大丈夫です。「%nといえば名前」というように、特定の記号が特定の項目に対応していると覚えるだけで、誰でも自由自在に出力を操れるようになります。
たとえば、「ファイルの名前」と「ファイルの大きさ(サイズ)」の2つだけを知りたい場合の実行例を見てみましょう。
stat -c "%n %s" test.txt
test.txt 1024
このコマンドでは、以下の2つの指定子を使っています。
%n:ファイルの名前(Name)を表示する%s:ファイルのサイズ(Size)をバイト単位で表示する
このように、ダブルクオーテーション(" ")の中に記号を並べるだけで、コマンドの結果がぐっとシンプルになり、一目で中身を把握できるようになります。複雑な画面から目を凝らして数値を探す手間が、これで一気に解消されます。
3. よく使うフォーマット指定子まとめ
stat -cを使いこなすために最も重要なのが、どの記号(指定子)がどの情報を表しているかを知ることです。ここでは、日々の作業やシステム管理で特によく使われる、初心者がまず覚えておくべき主要な指定子を一覧表にまとめました。
| 指定子 | 表示される内容 | 使いどころの例 |
|---|---|---|
%n |
ファイル名 | 対象を確認する基本中の基本です |
%s |
ファイルサイズ(バイト) | 容量が大きすぎないかチェックする際に便利です |
%F |
ファイルの種類 | 「通常のファイル」か「ディレクトリ」かを判別します |
%a |
アクセス権(8進数) | 755や644といった数値で権限を確認できます |
%A |
アクセス権(記号表記) | -rw-r--r--のような形式で直感的に確認できます |
%U |
所有者(ユーザー名) | 誰が作成したファイルかを確認できます |
%G |
所有グループ | どのグループに属しているかを確認できます |
%y |
最終更新時刻 | いつ中身が書き換えられたかを詳しく知ることができます |
これらの指定子を組み合わせることで、自分が必要な情報だけを並べた「オリジナルの一行レポート」を作成できます。たとえば、「ファイル名、ファイルの種類、権限、持ち主、サイズ」をまとめて確認したい場合は、次のように指定子を並べて入力します。
以下の例では、
test.txtというファイルの主要なステータスを一気に表示させています。
stat -c "%n %F %A %U %s" test.txt
test.txt regular file -rw-r--r-- user 1024
このように、実行結果が一行でスッキリと表示されるため、たくさんのファイルを一気に調べたいときや、画面を汚したくないときに非常に重宝します。まずは%nと%sから使い始めて、少しずつ他の記号も試してみるのが上達の近道です。
4. 改行やスペースの調整も自由自在
-cオプションの素晴らしい点は、出力フォーマットを単なる記号の羅列ではなく、「一つの文章」として自由に組み立てられることです。途中にスペースを入れたり、改行記号(\n)を挟んだりすることで、誰が見ても分かりやすい実行結果を作成できます。
例えば、システムに詳しくない人に「このファイルの詳細を報告して」と言われた場合、デフォルトの英語だらけの画面を見せるよりも、以下のように日本語のラベルを付けてあげると親切です。
stat -c "ファイル名: %n\nファイルサイズ: %s バイト\n最終更新: %y" test.txt
ファイル名: test.txt
ファイルサイズ: 1024 バイト
最終更新: 2026-02-04 08:30:00.000000000 +0900
\nという文字は、コンピュータに対して「ここで改行してね」という命令を送る特別な記号です。これを使うだけで、横に長くなりがちな情報を縦にスッキリと並べることができます。
また、項目と項目の間を「,(カンマ)」や「 /(スラッシュ)」で区切ることも可能です。このように日本語を交えた出力形式にしておけば、そのまま日報などのレポートに貼り付けたり、自分専用の管理ログを作成したりする際にも非常に便利です。自分にとって一番読みやすい「黄金のテンプレート」を探してみてください。
5. 複数のファイルを一括で処理する方法
stat -cオプションの真価は、一つひとつのファイルを調べるだけでなく、フォルダ内の複数のファイルを一気にまとめて処理できる点にあります。たとえば、あるフォルダの中に何百個ものファイルがあっても、たった一行のコマンドで全ての詳細情報をリストアップすることが可能です。
プログラミングの知識がない方でも、「ワイルドカード」と呼ばれる記号(*)を使えば、特定の拡張子を持つファイルだけを狙い撃ちして情報を集めることができます。ここでは、複数のテキストファイル(.txt)の名前とサイズを、カンマ(,)で区切って表示する例を見てみましょう。
stat -c "%n,%s" *.txt
file1.txt,2048
file2.txt,1024
file3.txt,512
このように「名前,サイズ」という形式で出力されたデータは、IT業界で「CSV(シーエスブイ)形式」と呼ばれます。この結果をコピーして、ExcelやGoogleスプレッドシートにそのまま貼り付けるだけで、一瞬でファイル管理表が完成します。
さらに、ファイル名に特定の文字が含まれるものだけを抽出したり、ディレクトリ全体の構成を把握したりする際にも、この一括指定は非常に便利です。手作業で一つずつプロパティを開いて確認する手間がなくなるため、大幅な時短につながります。
6. statとlsの違いを知っておこう
ファイル情報を確認するコマンドといえば、多くの人が最初に覚えるのがls -lでしょう。しかし、statコマンドとは「得意分野」が明確に異なります。どちらもファイル情報を表示しますが、用途に合わせて使い分けるのがLinuxマスターへの第一歩です。
| 特徴 | ls -l コマンド | stat コマンド |
|---|---|---|
| 主な目的 | ファイルの一覧表示と簡単な確認 | 特定のファイルの「全ステータス」確認 |
| 情報の細かさ | 標準的(日付やサイズなど) | 非常に細かい(ナノ秒単位の時刻やiノード) |
| カスタマイズ | 表示項目を自由には変えられない | -cで必要な項目だけを抽出できる |
例えば、「特定のファイルがいつ作成されたか(Birth)」や「詳細な権限設定」を確実に、かつ自動処理しやすい形で取り出したいときは、statの独壇場です。一方で、「このフォルダに何があるかな?」とざっくり眺めるなら、色分けされて見やすいlsが便利です。
同じ
test.txt を見ても、これだけ情報の密度が違います。
まずは ls -l の実行結果です。情報が固定されており、見慣れた形式で表示されます。
ls -l test.txt
-rw-r--r-- 1 user user 1024 2月 4 08:30 test.txt
次に stat の実行結果です。ファイルが持つ「全てのメタデータ」が一気に表示されるため、解析やトラブルシューティングに最適です。
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: 2026-02-04 08:00:00.000000000 +0900
このように、「一覧でざっくり確認」したい時は ls、「正確に必要な情報をピンポイントで、かつ自由な書式で取得」したい時は stat -c を選ぶという使い分けを意識してみてください。
7. 自動化やシェルスクリプトでの活用例
stat -cオプションが最も真価を発揮するのは、単純な確認作業ではなく、コンピュータに作業を任せる「自動化(シェルスクリプト)」の場面です。標準のstatコマンドでは余計な文字が多く、数値だけを取り出すのが大変ですが、-cを使えば必要なデータだけをピンポイントで抜き出せるため、プログラムとの相性が抜群です。
「もしファイルのサイズが〇〇より大きかったら、警告を出す」といった仕組みを簡単に作れます。手動で毎日チェックする手間を、このコマンド一つでゼロにできるのです。
例えば、特定のファイル(ここでは test.txt)のサイズをチェックして、1000バイトを超えていればメッセージを表示する簡単なプログラムの例を見てみましょう。
# ファイルサイズを変数 size に代入
size=$(stat -c "%s" test.txt)
# 1000バイトより大きいか判定
if [ "$size" -gt 1000 ]; then
echo "警告:ファイルサイズが制限を超えています(現在: $size バイト)"
fi
このスクリプト内では、stat -c "%s" を実行することで、ファイルサイズという「数字」だけを直接 size という箱(変数)に入れています。余計な説明文が含まれないため、そのまま計算や比較に使えるのが大きなメリットです。
このように、stat -cで得られた情報は自由自在に扱えるため、サーバーのログ監視や、バックアップ対象の選別など、高度なシステムの裏側でも頻繁に利用されています。まずは「特定の数値だけを抜き出して変数に入れる」という感覚を掴むだけで、作業の効率化の幅がグッと広がります。
8. stat -cオプションを使う際の注意点とエラー対策
stat -cオプションは非常に自由度が高い反面、記述方法に少しだけ決まりがあります。特にプログラミングに慣れていない方がつまずきやすいポイントを整理しました。これさえ守れば、意図しないエラーを防いで安全に使うことができます。
ダブルクオーテーションで囲む習慣をつけよう
フォーマットを指定する際、複数の指定子を並べたり、間にスペースや日本語の文字を入れたりする場合は、必ず全体をダブルクオーテーション(" ")で囲むようにしましょう。これを忘れると、コンピュータが「どこまでが書式の指示なのか」を判断できず、エラーが発生してしまいます。
stat -c %n %s test.txt(囲いがないため、正しく動作しない場合があります)正しい例
stat -c "%n %s" test.txt(しっかり囲むことで、一つのまとまりとして認識されます)
存在しない指定子(%文字)に注意
%の後に続くアルファベットは、あらかじめ決められたもの(%nや%sなど)である必要があります。もし定義されていない文字(例えば %z など)を適当に入れてしまうと、エラーメッセージが表示されるか、%zという文字がそのまま出力されてしまいます。
stat -c "ファイル名: %n 未知の記号: %z" test.txt
ファイル名: test.txt 未知の記号: %z
このように、意図しない表示になった場合は、使っている指定子が正しいかどうかを本記事の「3. よく使うフォーマット指定子まとめ」の一覧表で再確認してみてください。また、ワイルドカード(*)を使用する際は、対象のファイルが多すぎると画面が埋まってしまうため、まずは少数のファイルで試してみるのがおすすめです。
まとめ
本記事ではLinuxコマンドの中でも、ファイルの詳細情報を取得できるstatコマンドと、その出力を自由にカスタマイズできるstat cオプションについて詳しく解説しました。Linux初心者にとっては、lsコマンドとの違いやstatコマンドの出力内容の多さに戸惑うことも多いですが、stat cオプションを使うことで必要な情報だけをシンプルに取り出すことができ、作業効率が大きく向上します。
statコマンドはファイルのサイズや更新日時だけでなく、所有者や権限、iノード番号などの詳細なメタデータを確認できる非常に重要なコマンドです。しかし標準の出力は情報量が多く、目的の情報を見つけるのに時間がかかることがあります。そこでstat cオプションを活用することで、必要な情報だけをピンポイントで抽出し、見やすい形式で表示することが可能になります。
stat cオプションの基本を振り返る
stat cオプションではフォーマット指定子を使って表示内容を自由にカスタマイズできます。ファイル名やサイズなど、よく使う情報だけを表示することで、無駄な情報を省いて効率よく作業できます。
stat -c "%n %s" test.txt
test.txt 1024
このようにファイル名とサイズだけを表示することで、必要な情報を瞬時に確認できます。Linux初心者でも扱いやすく、覚えておくと非常に便利です。
複数の情報を組み合わせて表示する
フォーマット指定子を組み合わせることで、複数の情報を一行でまとめて表示することができます。これによりファイル管理や調査作業が格段に効率化されます。
stat -c "%n %F %A %U %s" test.txt
test.txt regular file -rw-r--r-- user 1024
このように表示内容を自由に構成できる点がstat cの最大の特徴です。Linuxコマンドの中でも非常に柔軟性が高く、実務でも頻繁に使われます。
改行や日本語ラベルで見やすくする
改行コードや文字列を組み合わせることで、読みやすいレポート形式の出力を作ることも可能です。特にチーム内での共有や報告資料として活用する際に便利です。
stat -c "ファイル名: %n\nサイズ: %s\n更新日時: %y" test.txt
ファイル名: test.txt
サイズ: 1024
更新日時: 2026-02-04 08:30:00.000000000 +0900
このように自分が理解しやすい形式に整えることで、Linux操作のハードルを大きく下げることができます。
複数ファイルを一括で処理する
stat cオプションはワイルドカードと組み合わせることで複数ファイルの情報を一度に取得できます。大量のファイルを扱う場面では非常に役立ちます。
stat -c "%n,%s" *.txt
file1.txt,2048
file2.txt,1024
file3.txt,512
このような形式で出力することで、スプレッドシートへの取り込みやデータ分析にも応用できます。
スクリプトでの活用方法
stat cで取得した情報はシェルスクリプトの中で利用することも可能です。条件分岐や自動処理に活用することで、業務の効率化を図ることができます。
size=$(stat -c "%s" test.txt)
if [ "$size" -gt 1000 ]; then
echo "サイズが大きいファイルです"
fi
このようにstat cは単なる表示コマンドではなく、自動化や運用にも役立つ重要なツールです。
初心者が意識すべきポイント
Linux初心者はまずstatコマンドの基本とフォーマット指定子の意味を理解することが大切です。特にファイルサイズや権限、更新日時などは実務でも頻繁に確認する項目です。stat cを使えばこれらの情報を瞬時に取得できるため、作業の正確性とスピードが向上します。
またlsコマンドとの違いを理解し、用途に応じて使い分けることも重要です。簡単な一覧確認はls、詳細情報の抽出や自動化はstat cという使い分けを意識することで、Linux操作の理解が深まります。
stat cオプションはシンプルでありながら非常に強力な機能を持っています。Linuxコマンドを学ぶ上で避けて通れない重要な知識の一つですので、実際に手を動かして試しながら習得していきましょう。繰り返し使うことで自然と理解が深まり、日々の作業が格段にスムーズになります。
生徒
stat cを使うと必要な情報だけ表示できるのが便利ですね
先生
その通りです情報が多いstatの弱点を補える重要な機能です
生徒
フォーマット指定子を覚えれば自由に表示できるんですね
先生
はいよく使う指定子から覚えるのがコツです
生徒
複数ファイルにも使えるのがすごいです
先生
大量のファイル管理では必須のテクニックです
生徒
スクリプトでも使えるのが印象的でした
先生
自動化と組み合わせるとさらに力を発揮します
生徒
これから実際に試してみます
先生
実際に使うことで理解が深まりますよ