ファイル拡張子/inode データを利用せずに正しい MIME タイプ情報を取得するのに苦労しています。magic を使用すると、ファイルが何であるかに関係なく、常に text/plain が返されます。
背景情報については、こちらをご覧ください。
Linux MIME タイプが glob やその他のメソッドを使用できるようにすると、正常に動作します。
mimetype mountain.jpg
山.jpg: 画像/jpeg
このファイルが画像であることを本当に確認したいので、マジックチェックで動作させようとすると、テキストファイルであると表示されます。
mimetype -M mountain.jpg
山.jpg: 画像/jpeg
テキストファイルではないことを確認するために、ファイルコマンドを使用します。
file -i mountain.jpg
mountain.jpg: image/jpeg; charset=binary
次のいずれかを試すと、text/plain のみを取得できるようになります。
cat mountain_dew-400-400.jpg | mimetype -M --stdin
STDIN: テキスト/プレーン
tee mountain_dew-400-400.jpg | mimetype -M --stdin
STDIN: テキスト/プレーン
mimetype --stdin - < mountain_dew-400-400.jpg
STDIN: テキスト/プレーン
私はすでに以下のコマンドを実行しました
cpan install IO::Scalar
cpan install File::MimeInfo
cpan install File::MimeInfo::Magic
答え1
mimetype --stdin
まったく機能していないようです。私は提出しましたDebian バグ #784545。
回避策として、file -i -
の代わりにを使用できますmimetype --stdin
。