Linuxコマンド file(ファイルの種類を判定する)

形式が不明なファイルの種類を確認するfileコマンドについて解説。

RHEL Fedora CentOS Vine Deblan Ubuntu Plamo

参考サイト:Man page of INSTALL

使用方法

Linuxでは拡張子がないファイルがあるため、ファイルの中身が何か開かないとわからない。その時、fileコマンドを使用することによりテキストファイルなのかバイナリファイルなのかがファイルを開かなくても調べることができる。

fileコマンドは、引数にファイルを指定します。指定されたファイルを解析しファイルタイプを表示します。ファイルシステム検査、マジックナンバー検査、マジック定義ファイル(/usr/share/misc/misc/magic.mgc)を参照する検査です。表示可能な文字列が含まれている場合は、「text」が表示されます。実行可能なプログラミングである場合は、「executable」が表示されます。その他のタイプ場合は「data」が表示されます。スクリプトである場合は、インタプリタ名とスクリプトであることが表示されます。

書式

$ file [オプション] ファイル名

オプション

-b,
–brief
出力の最初にファイル名を表示しない
-F,
–separator
結果出力のファイル名とタイプの間に入れる文字を指定する(デフォルトは「:」)
-i,
–mine
MIMEタイプ文字列を表示する
-k,
–keep-going
最初にマッチしたものだけでなく最後までテストする
-L,
–dereference
シンボリックリンクの場合は元ファイルをテストする
-s,
–special-files
特殊ファイル(デバイスファイルやキャラクタファイル)を読み込んだときに異常な表示をさせない。通常file(1)はstat(1)でファイルを読み込むが、このオプションを利用する場合は、stat(1)が返すファイルサイズを無視する。
-z,
–compress
圧縮ファイルの中身もチェックしようとする
-O各ファイル名の最後にNULL文字を入れる。
オプション一覧

サンプル

$ file sample.txt

実行結果

[centos@ work]$ ls -l
total 4
-rw-rw-r-- 1 centos centos 7 Apr  1 00:00 sample.txt
[centos@ work]$ file sample.txt
sample.txt: ASCII text
[centos@ work]$ 

ファイルの種類をMIMEタイプで表示

サンプル

$ file -i sample.txt

実行結果

[centos@ ~]$ file -i sample1.txt 
sample1.txt: text/plain; charset=us-ascii
[centos@ ~]$ 

ファイルのMIMEタイプを表示

サンプル

$ file *

実行結果

[centos@ jdk1.8.0]$ file *
bin:                                directory
COPYRIGHT:                          ISO-8859 text
db:                                 directory
include:                            directory
javafx-src.zip:                     Zip archive data, at least v1.0 to extract
jre:                                directory
lib:                                directory
LICENSE:                            ASCII text
man:                                directory
README.html:                        HTML document, ASCII text
release:                            ASCII text, with very long lines
src.zip:                            Zip archive data, at least v2.0 to extract
THIRDPARTYLICENSEREADME-JAVAFX.txt: UTF-8 Unicode (with BOM) text, with very long lines
THIRDPARTYLICENSEREADME.txt:        UTF-8 Unicode text