概要
`stat`コマンドは、ファイルのinode情報(メタデータ)を表示します。`-c`オプションにより、これらの情報をユーザー定義のフォーマットで出力できるため、特定の属性のみを抽出したり、他のコマンドと組み合わせて使用したりするのに適しています。
主な特徴
- ファイルおよびファイルシステムの詳細なメタデータの表示
- `-c`オプションによるカスタム出力フォーマットのサポート
- スクリプトおよび自動化タスクに便利
- さまざまなファイル属性(サイズ、パーミッション、所有者、時間など)へのアクセス
主なオプション
`stat`コマンドの核となる`-c`オプションと共に使用される主なフォーマット指定子です。
フォーマット指定オプション
生成されたコマンド:
コマンドを組み合わせてみてください。
説明:
`stat` コマンドを実行します。
これらのオプションを組み合わせて、AIと一緒に仮想的にコマンドを実行してみてください。
使用例
`stat -c`オプションを活用して、ファイル情報をさまざまなフォーマットで出力する例です。
ファイル名とサイズを出力
stat -c '%n %s' my_file.txt
指定されたファイルのファイル名とサイズをスペースで区切って出力します。
ファイルタイプとパーミッションを出力
stat -c '%F %A' my_script.sh
ファイルのタイプと、人間が読める形式のパーミッションを出力します。
所有者、グループ、最終更新時刻を出力
stat -c 'Owner: %U, Group: %G, Modified: %y' my_document.pdf
ファイルの所有者名、グループ名、最終更新時刻を特定の文字列と共に表示します。
シンボリックリンクの対象を確認
stat -c '%N' my_symlink
シンボリックリンクの場合、リンクされた元のファイルのパスを含めて出力します。
現在のディレクトリのすべてのファイル/ディレクトリ名とサイズを出力
stat -c '%n %s' *
ワイルドカードを使用して、現在のディレクトリ内のすべての項目について、名前とサイズを出力します。
ヒントと注意点
`stat -c`をより効果的に使用するためのヒントと注意点です。
引用符の使用
FORMAT文字列にスペースや特殊文字が含まれる場合、シェルがそれらを別の引数として解釈しないように、シングルクォート(')またはダブルクォート(")で囲む必要があります。
- シングルクォート('): 変数展開を防ぎ、文字列をそのまま渡す場合に便利です。
- ダブルクォート("): 変数展開を許可しつつ、文字列をまとめる場合に使用します。
時刻フォーマット
時刻関連の指定子(%x, %y, %z)は、デフォルトで人間が読める形式で出力されます。秒単位のタイムスタンプを取得するには、`%X`, `%Y`, `%Z`を使用してください。
findコマンドとの組み合わせ
find . -maxdepth 1 -type f -exec stat -c '%n %s' {} \;
`find`コマンドの`-exec`オプションと組み合わせて、特定の条件に一致するファイルに対して`stat -c`を実行できます。
OSごとの違い
一部のフォーマット指定子は、オペレーティングシステムや`stat`のバージョンによって動作が異なったり、サポートされていなかったりする場合があります。例えば、`%w`(作成時刻)指定子は、Linuxでは一般的にサポートされておらず、macOS/BSDでのみ使用可能です。
- Linux: 主に`coreutils`パッケージに含まれる`stat`バージョンを使用します。
- macOS/BSD: 一部のフォーマット指定子(例: `%w`)の動作が異なる場合があります。