Shell-Script
如何可靠地確定文件是否為圖像文件?
目前我正在使用以下命令:
file image.jpg | cut -d " " -f 2
到現在為止還挺好。它也適用於沒有圖像副檔名的文件。所以,我想知道是否有另一種方法可以做到這一點?我可能沒有看到上述程式碼會失敗的特定情況。
編輯:我正在嘗試創建一個腳本來按順序重命名目錄中的圖像文件。
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
使用
file
是辨識文件類型的可靠方法。它不依賴於文件副檔名,而是依賴於“幻數”;文件內容的開頭。為了使您的過程更加健壯,您可以
libmagic
直接使用。這樣,如果由於某種原因file
’ 的輸出格式發生變化,它不會影響您。但是,這確實意味著您需要使用可以呼叫 C 庫中的函式的語言編寫腳本。