file ファイルの種類を調べる
file [オプション] ファイル...試してみる
file samples/note.txtテキストファイルであることと、文字コードが分かります。
file samples/run.sh samples/page.html複数のファイルを一度に調べます。拡張子ではなく中身から判断します。
file samples/note.gz圧縮ファイルの種類が分かります。
file samples/dir samples/linkディレクトリやシンボリックリンクも判別します。
file -i samples/note.txt-i を付けると、MIME タイプの形式で表示します。
file -b /bin/ls-b を付けると、ファイル名を省いて種類だけを表示します。
主なオプション
-b | ファイル名を表示せず、種類だけを表示する |
|---|---|
-i | MIME タイプの形式で表示する(--mime と同じ) |
-L | シンボリックリンクをたどって、リンク先を調べる |
-z | 圧縮ファイルの中身も調べる |
解説
拡張子ではなく中身で判断する
file は、ファイル名の拡張子ではなく、ファイルの先頭にある識別用のデータ(マジックナンバー)などを見て種類を判断します。そのため、拡張子が .txt でも中身が画像なら画像と表示されます。拡張子がないファイルの正体を調べるときに便利です。
表示の例
テキストファイルなら「ASCII text」や「Unicode text, UTF-8 text」、シェルスクリプトなら「shell script」、実行ファイルなら「ELF … executable」、ディレクトリなら「directory」と表示されます。
シンボリックリンク
標準では、シンボリックリンクはリンク自体を調べて「symbolic link to …」と表示します。リンク先のファイルを調べたいときは -L を付けます。
ls との違い
ls -l は権限や大きさなどの情報を表示しますが、中身が何であるかは分かりません。file は逆に、中身の種類を知るためのコマンドです。