標準の file
コマンド (私のUbuntuシステムでは5.04)が十分に洗練されていないように見えることがあります(または、間違って使用しているだけです。
たとえば、.exe
ファイルで実行し、アーカイブが含まれていることを確信している場合、次のような出力が期待されます。
$ improved-file foo.exe
foo.exe: PE32 executable for MS Windows (GUI) Intel 80386 32-bit
.Zip archive included (just use unzip to extract)
その他の問題:
file
は 'data'を表示します)そのような.exeファイルの例 アーカイブを含む-いくつかのアーカイブ形式を推測し、対応するunpack-commandsを試行 'n'エラーアプローチで試しました-これは最終的には機能しました-しかし、私はそうしますむしろ、より自動検査指向のワークフローを好みます。
オールインワンのツールは考えられませんが、特定のカテゴリの多数のファイルに対応できるプログラムがあります。
たとえば、 p7Zip は多数のアーカイブ形式を認識するため、ファイルがアーカイブであると思われる場合は、そのファイルで7z l
を実行してみてください。
$ 7z l ta12b563enu.exe
…
Type = Cab
Method = MSZip
…
ファイルが画像であると思われる場合は、 ImageMagick を試してください。
$ identify keyboard.jpg.gz
keyboard.jpg.gz=>/tmp/magick-XXV8aR5R JPEG 639x426 639x426+0+0 8-bit DirectClass 37.5KB 0.000u 0:00.000
オーディオファイルまたはビデオファイルの場合は、mplayer -identify -frames 0
を試してください。
file
が識別できないファイルを見つけた場合は、 マジックライブラリの作成者 に機能リクエストを行うことができます。
file
には何の問題もありません。 magic(5)
ファイルのルールに基づいてファイルを調べるという、本来の目的を果たしています。これらのタイプのファイルを識別する一般的な方法を考え出したい場合は、新しいマジックルールを送信できます。詳細については、magic
のマンページをお読みください。
file
がこれまでに行うとは思えないことの1つは、「連結の検出」です。ファイル内のすべてのバイトをスキャンせずに次のセグメントがいつ開始するかを判断する方法はありません。file
が実行しない、または実行したいことです。
ちなみに、epubファイルを区別するには、同じ基本構造を使用するearファイルとの違いを検出する必要があります。