ファイルの MIME type を確認したい

ファイルのMIME typeをコマンドラインで確認したい場合、file コマンドを使う。

file -i で MIME type を確認する(Linux)

Linuxでは file -i でファイルのMIME typeと文字エンコーディングを確認できる。

$ file -i /etc/hosts
/etc/hosts: text/plain; charset=us-ascii

バイナリファイルの場合は charset=binary と表示される。

$ file -i /bin/ls
/bin/ls: application/x-pie-executable; charset=binary

ファイル名を出力に含めたくない場合は -b オプションを組み合わせる。

$ file -b -i /etc/hosts
text/plain; charset=us-ascii

MIME type のみを取得する

charsetを含まずMIME typeだけ取得したい場合は --mime-type オプションを使う。

$ file --mime-type /etc/hosts
/etc/hosts: text/plain

ファイル名なしで取得する場合は -b と組み合わせる。スクリプトで変数に代入する場合などに便利。

$ file -b --mime-type /etc/hosts
text/plain

macOS との違い

macOSでは -i オプションの意味が異なる。file -i はファイルの種類を表示するが、MIME typeは表示されない。

# macOS での file -i の結果
$ file -i /etc/hosts
/etc/hosts: regular file

macOSでMIME typeを取得するには -I(大文字)または --mime-type を使う。

# macOS での MIME type 取得
$ file -I /etc/hosts
/etc/hosts: text/plain; charset=us-ascii

$ file --mime-type /etc/hosts
/etc/hosts: text/plain

--mime-type はLinux・macOSの両方で同じ動作をするため、クロスプラットフォームで使いたい場合は --mime-type を使うとよい。