現在、次のコマンドを使用しています。
file image.jpg | cut -d " " -f 2
今まではそんなに良くなった。イメージ拡張子のないファイルでも機能します。もしそうなら、別の方法があるのだろうか。上記のコードが失敗する特定の状況を見ることができないかもしれません。
編集:ディレクトリのイメージファイル名を順番に変更するスクリプトを作成しようとしています。
答え1
ImageMagickプロジェクトには画像を認識する機能があります。
私はコマンドラインの「認識」機能を含むImageMagickを使用してきましたが、写真の認識に失敗したことはありません。
たとえば、次のように書式設定以上の機能を提供します。
$ identify tmp3.jpg
tmp3.jpg JPEG 1680x1050 1680x1050+0+0 DirectClass 8-bit 293.582kb
$ identify tmp.png
tmp.png PNG 1012x900 1012x900+0+0 DirectClass 8-bit 475.119kb
答え2
を使用することは、file
ファイルの種類を識別する安定した方法です。ファイル拡張子ではなく、ファイルの内容の先頭に依存します。
プロセスをより強力にするために直接libmagic
使用できます。これにより、何らかの理由でfile
出力形式が変更されても影響を受けません。ただし、これはCライブラリの関数を呼び出すことができる言語でスクリプトを作成する必要があることを意味します。
答え3
libmagic
唯一の目的はパスを認識することであるため、コマンドは正しいです。ファイルタイプそして模様それぞれ与えられたファイル形式。だからあなたはより良いものを見つけることができません。独自のファイル拡張子を追加することもできますが、正しく認識されません。 (magickの場合、コマンドファイルではありません)