stat -tオプションの使い方をやさしく解説|簡易フォーマットでファイル情報を表示する方法
生徒
「先生、statコマンドって出力が多くて見づらいことがあります。もっとシンプルに表示する方法ってないんですか?」
先生
「あるよ。-tというオプションを使えば、ファイル情報を<強>1行の簡易フォーマット強>で表示できるんだ。とてもスッキリするよ。」
生徒
「それは便利そうですね!どうやって使うんですか?」
先生
「それじゃあ、stat -tの使い方を詳しく見てみよう!」
1. stat -tオプションとは?
stat -tは、Linuxのstatコマンドに用意されている簡易フォーマット表示用のオプションです。
通常のstatでは、ファイルの詳細情報が見やすく整えられて複数行で表示されますが、-tをつけると、それらの情報を1行にまとめて出力します。
出力の内容は機械向けで、人間には少し読みづらいこともありますが、スクリプト処理やファイルの一覧確認などでは非常に便利なオプションです。
2. 実際に使ってみよう!
まず、通常のstatコマンドの出力結果を見てみましょう。
stat /etc/hosts
File: /etc/hosts
Size: 230 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 1234567 Links: 1
Access: 2025-09-16 09:00:00.000000000 +0900
Modify: 2025-08-01 10:00:00.000000000 +0900
Change: 2025-08-01 10:01:00.000000000 +0900
次に-tオプションをつけて、同じファイルを表示してみます。
stat -t /etc/hosts
/etc/hosts 230 8 81a4 1000 1000 802 1234567 1694835600 1726458000 1726458060 4096
このように、出力結果が1行に簡略化されて表示されます。日付もUNIXタイムスタンプ(秒数で表す形式)になっており、他のツールで扱いやすい形になっています。
3. 各項目の意味を理解しよう
stat -tで出力される各フィールドは以下の順番です:
- ファイル名
- サイズ(バイト)
- ブロック数
- IOブロックサイズ
- UID(所有者のユーザーID)
- GID(所有者のグループID)
- デバイス番号
- inode番号
- 最終アクセス時刻(UNIX時間)
- 最終更新時刻(UNIX時間)
- 最終状態変更時刻(UNIX時間)
- ファイルシステムのブロックサイズ
「UNIX時間」とは、1970年1月1日から何秒経過したかで表される時刻のことです。これを人間が読める形式に変換するにはdateコマンドを使うと便利です。
date -d @1694835600
2023年9月16日 09時00分00秒 JST
4. stat -tの活用シーン
この-tオプションは、以下のような場面で役立ちます:
- ログとしてファイル情報を記録する
- 複数ファイルの情報を一括で取得してスクリプト処理する
- 人間には読みにくいが、プログラムにとって扱いやすい形式で出力する必要がある場面
例えば下記のように、複数ファイルの情報をまとめて取得することも可能です。
stat -t *.txt
file1.txt 128 8 4096 1000 1000 802 111111 1694835600 1726458000 1726458060 4096
file2.txt 256 8 4096 1000 1000 802 222222 1694835700 1726458010 1726458070 4096
5. 他のオプションとの違いを知っておこう
初心者にとってはstatの出力が多すぎて難しく感じることもあります。その点、-tはシンプルですが、以下のような点に注意が必要です:
- 項目名が表示されない(情報の意味を知っておく必要がある)
- 日付がUNIX時間で表示される(読みづらい)
- ファイルの種類やパーミッション情報は表示されない
もし人間にとって読みやすい形式で出力したい場合は、オプションなしのstatや--formatを使うのがよいでしょう。
まとめ
今回の記事では、Linuxの運用やスクリプト作成において非常に強力な武器となるstatコマンドの-tオプションについて、基礎から具体的な活用方法まで詳しく解説してきました。普段、何気なくファイルの情報を確認する際には、通常のstatコマンドで十分かもしれません。しかし、システム開発やサーバー管理の現場において、「プログラムで解析しやすいデータ」が必要になったとき、この-tオプション(簡略表示形式)が真価を発揮します。
stat -tオプションの重要ポイントをおさらい
あらためて、このオプションの大きな特徴を振り返ってみましょう。もっとも大きな利点は、「1行に情報が凝縮されていること」と「時刻がUNIXタイムスタンプで出力されること」です。これにより、シェルスクリプトのwhile文やfor文の中で、cutコマンドやawkコマンドを使って特定の項目(ファイルサイズや更新日時など)を抽出する作業が劇的に楽になります。
例えば、バックアップスクリプトを作成する際に、特定のディレクトリ内にあるファイルの最終更新日時を比較したいケースを考えてみてください。通常のstatコマンドの出力だと、日付文字列をパース(解析)するのに手間がかかりますが、-tオプションを使えば数値として比較できるため、条件分岐が非常にシンプルになります。
実践的なコマンド操作の例
ここでは、一般ユーザー権限でカレントディレクトリにある複数のテキストファイル(.txt)の情報を一括取得する流れをシミュレーションしてみましょう。
stat -t *.txt
test1.txt 45 8 81a4 1000 1000 802 1572865 1742961600 1742961600 1742961600 4096
test2.txt 120 8 81a4 1000 1000 802 1572866 1742961700 1742961700 1742961700 4096
もし、システム全体の重要な設定ファイルを管理しているルートユーザー(root)が、セキュリティチェックのためにファイルのinode番号やパーミッション情報を確認したい場合は、以下のように実行することもあります。
stat -t /etc/shadow
/etc/shadow 1234 8 8000 0 42 802 987654 1742960000 1742960000 1742960000 4096
SEOの視点から見たstatコマンドの学び方
エンジニアとしてレベルアップするためには、単にコマンドを暗記するだけでなく、「なぜそのオプションが存在するのか」という背景を理解することが大切です。stat -tは、いわば「対話型ではなくバッチ処理型」のツールです。Linuxの世界では「一つのプログラムは一つのことを上手に行う」という哲学がありますが、stat -tは「ファイル情報の提供」を機械にとって最も効率的な形で行っている好例と言えるでしょう。
初心者のうちは、数値が並んでいるだけの出力を見て「難しいな」と感じるかもしれませんが、各項目の並び順(ファイル名、サイズ、ブロック数、UID、GID...)さえ把握してしまえば、これほど情報の密度が高い出力はありません。ぜひ、日々のサーバー操作の中で、lsコマンドだけでなくstatコマンド、そしてそのオプションである-tを使い分けてみてください。
生徒
先生、ありがとうございました!stat -tを使うと、あんなに長かったファイル情報がたった1行にまとまって驚きました。でも、パッと見ただけだと数字ばかりで、どれがどの情報か迷っちゃいそうです。
先生
そうだね。確かに人間が読むには、通常のstatの方が優しいかもしれないね。でも、スクリプトを書いて自動化しようとすると、その「数字の羅列」が逆にありがたくなるんだよ。スペース区切りだから、プログラムで切り出しやすいんだ。
生徒
なるほど!プログラムに読み込ませるための専用モードみたいなものなんですね。UNIXタイムスタンプも、最初は戸惑いましたけど、dateコマンドで変換できると分かって安心しました。
先生
その通り!実はstatには他にも--formatを使って自分好みの表示を作る方法もあるんだけど、まずは標準的な-tを使いこなせるようになると、Linuxのファイル管理がぐっと楽になるよ。例えば、特定のユーザーが所有しているファイルだけを抽出したりするのも簡単になるしね。
生徒
ファイル管理の幅が広がりますね。今日学んだ項目の順番をメモしておいて、実際にログファイルの解析スクリプトを作ってみようと思います。先生、今日も勉強になりました!
先生
いい意気込みだね!実際に手を動かしてスクリプトを書いてみるのが、一番の近道だよ。もしコマンドの実行結果をファイルに保存したいときは、リダイレクト(>)を使って保存するのも忘れないでね。頑張って!