statコマンド:ファイルの詳細情報を一瞬で取得!

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:アクセス日時が一定期間より古いファイルを一覧表示

アクセス日時が特定の日付より古いファイルを検索する場合、statawkを組み合わせることで効率的に実現できます。

使用例

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で出力を柔軟にカスタマイズ可能。
  • 応用例: findawkと組み合わせることで、強力なファイル管理が実現。

Linux初心者の方も、中級者の方も、このコマンドを習得すれば作業の効率が大幅に向上します。ぜひ、あなたのLinuxライフにstatコマンドを取り入れてみてください!

コメント

タイトルとURLをコピーしました