Linuxの世界では、ファイルの情報を正確かつ迅速に把握することが極めて重要です。ファイルの属性や変更履歴、アクセス権限などを確認する必要がある場面は、エンジニアやシステム管理者の間では日常的な作業のひとつと言えるでしょう。そこで登場するのが、stat
コマンドです!この記事では、Linux初心者から中級者までを対象に、stat
コマンドの基本的な使い方から、応用的な活用方法まで徹底的に解説していきます。この記事を読めば、stat
コマンドを自在に使いこなすスキルが身につくこと間違いありません!
statコマンドとは?
stat
コマンドは、Linux環境でファイルやディレクトリの詳細情報を表示するための非常に便利なツールです。
例えば、以下のような情報を取得することができます:
- 最終アクセス日時
- 最終変更日時
- 作成日時(ファイルシステムが対応している場合)
- ファイルサイズ
- 所有者
- アクセス権限
- ハードリンクの数
ls -l
コマンドでも基本的なファイル情報を確認できますが、stat
コマンドはそれ以上に詳細な情報を提供します。ファイル管理やトラブルシューティングを効率化するために、ぜひ覚えておきたいコマンドのひとつです。
statの基本的な使い方
まずは、stat
コマンドの基本的な使い方を学んでいきましょう。構文は非常にシンプルで直感的です。
stat <ファイル名またはディレクトリ名>
使用例1:ファイルの詳細情報を表示
以下のコマンドを実行すると、example.txt
というファイルの詳細情報が表示されます。
stat example.txt
出力例:
File: example.txt
Size: 1234 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 1234567 Links: 1
Access: 2023-10-10 12:34:56.000000000 +0000
Modify: 2023-10-09 11:22:33.000000000 +0000
Change: 2023-10-08 10:11:22.000000000 +0000
Birth: -
出力内容の詳細説明
- File: 対象のファイル名
- Size: ファイルサイズ(バイト単位)
- Blocks: ファイルが使用しているディスクブロック数
- IO Block: ファイルシステムの入出力単位(ブロックサイズ)
- Device: ファイルが配置されているデバイス番号
- Inode: ファイルのinode番号(ファイルシステム内での一意な識別子)
- Links: ハードリンクの数(リンク元の数)
- Access: ファイルの最終アクセス日時
- Modify: ファイル内容の最終変更日時
- Change: ファイルのメタデータ(属性情報)の最終更新日時
- Birth: ファイルの作成日時(対応ファイルシステムのみ表示)
statの主要なオプション
stat
コマンドには、多彩なオプションが用意されています。ここでは、特に頻出する便利なオプションをいくつかピックアップして紹介します。
1. 出力形式をカスタマイズする(--formatオプション)
出力をカスタマイズするには、--format
オプションを使用します。これにより、必要な情報だけを抽出して表示することが可能です。
使用例
stat --format="ファイル名: %n, サイズ: %s バイト, アクセス日時: %x" example.txt
出力例:
ファイル名: example.txt, サイズ: 1234 バイト, アクセス日時: 2023-10-10 12:34:56.000000000 +0000
主なフォーマット指定子
%n
: ファイル名%s
: ファイルサイズ(バイト単位)%x
: 最終アクセス日時%y
: 最終変更日時%z
: 最終更新日時%i
: inode番号%u
: ファイルの所有者(ユーザーID)%g
: ファイルのグループ(グループID)
2. 人間に読みやすい形式で表示(--printfオプション)
--printf
オプションを使用すると、さらに柔軟なフォーマット指定が可能です。改行やタブなども自由に挿入できます。
使用例
stat --printf="ファイル名: %n\nサイズ: %s バイト\nアクセス日時: %x\n" example.txt
出力例:
ファイル名: example.txt
サイズ: 1234 バイト
アクセス日時: 2023-10-10 12:34:56.000000000 +0000
3. ファイルシステム情報を表示する(--file-systemオプション)
ファイルシステムに関する情報を取得したい場合には、--file-system
オプションを使用します。
使用例
stat --file-system example.txt
出力例:
File: "example.txt"
ID: 8020000 Namelen: 255 Type: ext4
Block size: 4096 Fundamental block size: 4096
Blocks: Total: 123456 Free: 65432 Available: 54321
Inodes: Total: 567890 Free: 123456
statコマンドの応用
stat
コマンドは、単なる情報確認だけでなく、スクリプトや他のコマンドと組み合わせて様々な場面で活用できます。ここではその具体例をいくつか紹介します。
応用例1:特定ディレクトリ内の全ファイル情報を取得
ディレクトリ内のすべてのファイルについて詳細情報を取得する場合、find
コマンドと組み合わせると非常に便利です。
使用例
find /path/to/directory -type f -exec stat {} \;
このコマンドは、指定したディレクトリ内のすべてのファイルに対してstat
コマンドを実行します。
応用例2:アクセス日時が一定期間より古いファイルを一覧表示
アクセス日時が特定の日付より古いファイルを検索する場合、stat
とawk
を組み合わせることで効率的に実現できます。
使用例
find /path/to/directory -type f -exec stat --format="%n %X" {} \; | awk '$2 < 1696896000 { print $1 }'
※1696896000
はUnixタイムスタンプで、対象の日付を秒単位で表したものです。この例では、指定日時より古いファイルをリストアップします。
応用例3:ファイルの属性をスクリプトで利用
stat
コマンドの出力をシェルスクリプト内で利用することで、ファイル操作を自動化できます。
使用例
#!/bin/bash
file="example.txt"
size=$(stat --format="%s" "$file")
if [ "$size" -gt 1000 ]; then
echo "$file は 1KB を超えています。"
else
echo "$file は 1KB 未満です。"
fi
このスクリプトは、指定したファイルのサイズを確認し、1KBを超えているかどうかを判定します。
まとめ
stat
コマンドは、Linuxシステムでファイルやディレクトリの詳細情報を確認する際に不可欠なツールです。この記事では、基本的な使い方から主要なオプション、さらには実践的な応用例までを網羅的に解説しました。以下にポイントを再度まとめます:
- 基本情報表示:
stat <ファイル名>
で詳細なファイル情報を取得。 - 主要なオプション:
--format
や--file-system
で出力を柔軟にカスタマイズ可能。 - 応用例:
find
やawk
と組み合わせることで、強力なファイル管理が実現。
Linux初心者の方も、中級者の方も、このコマンドを習得すれば作業の効率が大幅に向上します。ぜひ、あなたのLinuxライフにstat
コマンドを取り入れてみてください!
コメント