ほとんどの人はファイルの拡張子を見て、その拡張子からファイルの種類を推測します。 たとえば、拡張子がgif、jpg、bmp、またはpngのファイルがある場合、画像ファイルが考えられます。拡張子がzipのファイルがある場合は、 zip圧縮ユーティリティを使用してファイルが圧縮されているとみなされます 。
実際には、ファイルは1つの拡張子を持つことができますが、全く異なるものになります。ファイルに拡張子がない場合は、どのようにファイルの種類を決定できますか?
Linuxでは、fileコマンドを使用して実際のファイルタイプを見つけることができます。
ファイルコマンドの仕組み
ドキュメントによると、fileコマンドはファイルに対して3セットのテストを実行します。
- ファイルシステムテスト
- 魔法のテスト
- 言語テスト
有効な応答を返す最初のテストセットは、ファイルタイプを出力します。
ファイルシステムテストは、statシステムコールからの戻りを調べます。 プログラムは、ファイルが空で、それが特別なファイルであるかどうかをチェックします。 ファイルタイプがシステムヘッダファイルにある場合、有効なファイルタイプとして返されます。
魔法のテストは、ファイルの内容を調べるのに役立つ、最初の数バイトのファイルの内容をチェックします。 ファイルをそのファイルタイプとマッチさせるために使用されるさまざまなファイルがあり、これらは/ etc / magic、/ usr / share / misc / magic.mgc、/ usr / share / misc / magicに格納されています。 これらのファイルは、$ HOME / .magic.mgcまたは$ HOME / .magicという名前のホームフォルダに置くことで上書きすることができます。
最後のテストは言語テストです。 ファイルがテキストファイルかどうかがチェックされます。 ファイルの最初の数バイトをテストすることにより、ファイルがASCII、UTF-8、UTF-16のいずれかであるか、またはファイルをテキストファイルとして判断する別の形式であるかを推測できます。 文字セットが推測されると、ファイルは異なる言語に対してテストされます。 例えば、ファイルacプログラムです。
いずれのテストも機能しない場合、出力は単純にデータです。
ファイルコマンドを使用する方法
fileコマンドは、次のように使用できます。
ファイルfilename
たとえば、file1というファイルがあるとします。次のコマンドを実行します。
ファイルfile1
出力は次のようになります。
file1:PNG画像データ、640 x 341,8ビット/カラーRGB、ノンインターレース
表示された出力は、file1がイメージファイルであるか、より正確にはポータブルネットワークグラフィックス(PNG)ファイルであると判断します。
ファイルの種類によって、次のように異なる結果が生成されます。
- ISOファイルタイプ - DOS / MBRブートセクタISO 9660 CD-ROMファイルシステムデータ 'label'(ブート可能)。 パーティション2:ID = 0xef、開始CHS(0x3ff、254,63)、終了CHS(0x3ff、4,63)開始部1496,4736セクタ
- ODSファイルタイプ - OpenDocumentスプレッドシート
- PDFファイルタイプ - PDFドキュメント、バージョン1.4
- CSVファイルタイプ - 非常に長い行のASCIIテキスト、CRLF行インジケータ
ファイルコマンドの出力をカスタマイズする
デフォルトでは、fileコマンドはファイル名とその上のすべての詳細を提供します。 ファイル名を指定せずに詳細を欲しいのであれば、以下のスイッチを使用してください:
ファイル-bファイル1
出力は次のようになります。
PNG画像データ、640×341,8ビット/カラーRGB、ノンインターレース
また、ファイル名とタイプの間の区切り文字を変更することもできます。
デフォルトでは、区切り記号はコロン(:)ですが、パイプ記号などの好きなものに変更することができます。
ファイル-F '|' ファイル1
出力は次のようになります。
file1 | PNG画像データ、640×341,8ビット/カラーRGB、ノンインターレース
複数のファイルの処理
デフォルトでは、fileコマンドを1つのファイルに対して使用します。 ただし、fileコマンドで処理されるファイルのリストを含むファイル名を指定することはできます。
たとえば、ナノエディタを使って testfilesというファイルを開き、次の行を追加します。
- / etc / passwd
- /etc/pam.conf
- / etc / opt
ファイルを保存し、次のファイルコマンドを実行します。
ファイル-f testfiles
出力は次のようになります。
/ etc / passwd:ASCIIテキスト
/etc/pam.conf:ASCIIテキスト
/ etc / opt:ディレクトリ
圧縮ファイル
デフォルトでは、圧縮ファイルに対してfileコマンドを実行すると、次のような出力が表示されます。
file.zip:ZIPアーカイブデータ、抽出するV2.0以上
これはファイルがアーカイブファイルであることを示していますが、実際にはファイルの内容はわかりません。 圧縮ファイル内のファイルのファイルタイプを確認するには、zipファイル内を調べることができます。
次のコマンドは、ZIPファイル内のファイルに対してfileコマンドを実行します。
ファイル-z filename
出力には、アーカイブ内のファイルのファイルタイプが表示されます。
概要
一般に、ほとんどの人は単にfileコマンドを使って基本的なファイルタイプを見つけるだけですが、fileコマンドが提供するすべての可能性についてターミナルウィンドウに次のように入力してください。
マンファイル