fileコマンドの使い方と活用法

—

by

in

概要

Linux/Unix 系 OS で広く利用されている file コマンドは、ファイルの種類(MIME タイプや文字コードなど)を判別するためのツールです。ファイルの拡張子だけでなく、実際のバイト列を解析して正確に分類します。

主なオプション

  • -b:ファイル名だけを出力し、説明文の先頭にある「filename:」を省略する。
  • -i:MIME タイプのみを出力する。
  • -L:シンボリックリンクをたどって実体ファイルを判定する。
  • -s:空ファイルでも判定結果を出力する。
  • -f filelist:判定対象のファイル名をリストファイルから読み込む。

基本的な使用例

単一ファイルの判定

file example.txt

出力例:

example.txt: ASCII text

複数ファイルをまとめて判定

file *.png *.jpg

各ファイルの MIME タイプや画像フォーマットが一覧で表示されます。

シンボリックリンクをたどる

file -L link_to_script.sh

リンク先の実体がスクリプトであれば「POSIX shell script」などと表示されます。

応用的な使い方

  • スクリプト内で $(file -b –mime-type “$f”) を用いてファイルタイプを取得し、条件分岐に利用できる。
  • find と組み合わせて特定タイプのファイルだけを検索する例:
    find . -type f -exec sh -c 'type=$(file -b --mime-type "$1"); if [ "$type" = "application/pdf" ]; then echo "$1"; fi' _ {} \;

注意点とベストプラクティス

・file は magic データベース(/usr/share/file/magic)を参照します。OS のアップデートや新しいファイル形式を認識させたい場合は、file -C -m /path/to/custom.magic としてカスタムデータベースを指定できます。

・バイナリファイルや圧縮ファイルは、内部のヘッダ情報が無いと「data」や「unknown」と判定されることがあります。その場合は -z オプションで圧縮展開後の判定を試みることが有効です。

まとめ

file コマンドは、シェルスクリプトや日常的なファイル操作で「このファイルは何か?」を瞬時に答えてくれる便利なツールです。基本オプションを覚え、magic データベースを適切に管理すれば、ほぼすべてのファイルタイプに対応できます。