あなたの目標は「実際のデータをチェックすることによってそれ以上の制限なしにファイルをそのタイプで検索する」ことです。
しかし、一部の誤検出や偽陰性では問題ありません。拡張子のみを検索して画像ファイルを検索している場合は、画像ファイルの場合は「image.jpg」、偽陰性の場合は「image.jpg?width = 1024 & height = 800」が得られます。 "" image.exe "の代わりに、偽陽性です。
もう一方の側で、ファイルの最初の2つのバイトをチェックすることができます - イメージデータのほとんどのスキームは個々のヘッダーを持っています。この方法は、より少ない障害点を有する。イメージファイルのヘッダーに似ている最初のバイトを持つランダムなデータの塊がある場合、偽陽性を得ることができます。可能性はありますが、ほとんどありそうもありません。ヘッダーが削除された場合は、偽のネガティブな情報を得ることができます(たとえば、転送中、何らかの形で、またはファイルを作成した悪いスクリプトで)。また可能であり、そうでない可能性もあります。もしそうでなければ、多くはです。
小さなUnixツールfile
はこれを実行し、かつては簡単にテキストファイルを解析できました。あなた自身のプロジェクトに使用することができました。現在では、インストールされていない複数の単一ファイルを含む大きなフォルダがプリコンパイルされた形式でのみ存在します。たとえば、http://bazaar.launchpad.net/~ubuntu-branches/ubuntu/saucy/file/saucy/files/head:/magic/Magdir/という形式のテキストファイルを含むフォルダを見つけることができます。この形式は、オンラインのmagic(5)
のマンページに記載されています。例:https://linux.die.net/man/5/magic
スタックオーバーフローは通常仮想質問を処理しません。しかし、ファイル名に基づいて決定を下すことは、データを開いたり見たりするよりもはるかに速くなることは明らかです。 – lit
ファイル名がファイル内のコンテンツの種類を実際に表していることをどのように保証していますか?それは問題ですか? – Soren
はい、偽陽性でないことが重要です – varnit