2011-02-01 7 views
0

.pstまたは.dbxファイルであるかどうかにかかわらず、自分のシェルスクリプトに与えられた入力ファイルのファイル形式を特定します。私はHow to check the extension of a filename in a bash script?をチェックしました。 MIMEタイプは、私が.pstと上file -ib <filename>を試してみましたapplication/textなどbashシェルでpstファイルとdbxファイルを区別する適切な方法

であれば拡張子がtxt

  • チェックであれば

    • チェックを - txtファイルと2つの方法があり与えられている1の特価情報.dbxファイルであり、両方についてapplication/octet-streamを示しました。これは、PSTファイルの

      file1.dbx: Microsoft Outlook Express DBX File Message database 
      

      と - - 私はちょうどfile <filename>を行う場合は、その後私は、dbxファイルの

    これを取得

    file2.pst: Microsoft Outlook binary email folder (Outlook >=2003) 
    

    だから、私の質問は

    あります -

    • ですか?出力が何かになる可能性があり、適切なチェックが必要なときに毎回MIMEタイプの検出を使用しますか?

    • この場合mime type checkを適用するには、どちらも "application/octet-stream"を返しますか?

    更新
    我々だけの.dbxファイルが本当にdbxのファイルであることを、Unixシステム上で確認することができないようですので、私は拡張ベースの検出を行うにはしたくありませんでした。 file <filename>は、ファイルの正しい情報(「Microsoft Outlook Express DBXファイルメッセージデータベース」など)を含む行を返します。これは、ファイルコマンドがファイルタイプを正しく識別できることを意味します。次に、file -ib <filename>コマンドで正しい情報が得られないのはなぜですか?
    file <filename>の文字列出力の解析は問題ありませんか?私がOutlookファミリー(MS Outlook Express、MS Office Outlook 2003,2007,2010など)のデータストレージファイルの狭いセットを特定する必要があると仮定すれば、それはお勧めですか?比較することができるapplication/dbxのような小さなテキスト識別子は、私が必要とするものです。

  • +0

    両方がバイナリファイルであり、それ以外のことをするよう指示されていないので、両方に対して 'application/octet-stream'を返しています。あなたがシステムの 'magic.mime'にそれを追加するのを止めるものは何もありません(dbx/pstファイルタイプの実際のMIMEタイプを除いて) – Hasturkun

    答えて

    3

    コマンドは、遭遇すると予想されるファイルタイプのルールを含むファイルタイプ検出データベースを使用していることが前提です。ファイルの内容がファイルの先頭近くに一意のコードを持たない場合、これらのファイルの種類を認識できないことがあります。

    mimeタイプを出力する-iオプションは、長い記述をファイルタイプに変換するのではなく、実際には別の「マジック」ナンバーファイルを使用してファイルタイプを認識することに注意してください。これらの2つのデータベースが同期していない可能性があります。アプリケーションが本当にこれらの2つのファイルタイプを認識する必要がある場合は、Linuxソースコードを見て、どのように認識されているかを確認し、この認識アルゴリズムをアプリケーションにコード化することをお勧めします。

    DOSファイルタイプの検出に相当する場合は、ファイル名の拡張子(最後のピリオドの後ろの部分)を取り除き、必要なタイプを定義する独自のテーブルでその文字列を検索します。

    +0

    あなたの答えをありがとう。私の更新を確認してください。 –

    関連する問題