2013-05-22 250 views

回答

1

您可以嘗試使用UNIX命令file嘗試和檢測的MIME類型。例如:

$ file -bi i_am_a_png 
image/png; charset=binary 

這試圖通過它的簽名(二進制結構)來確定文件類型。

你可以像這樣運行bash腳本來推斷文件擴展名,並相應地重命名文件:

#!/bin/bash 

IFS=$"\n" 
for f in * 
do 
    mime=`file -bi $f` 
    if [ $? == 0 ] 
    then 
     ext=($(echo $mime | awk -F ";" '{ gsub(".*/", ""); print $1}')) 
     cmd="mv $f $f.$ext" 

     echo $cmd 
     # `$cmd` # Uncomment when you're happy with the command output 
    else 
     echo "Could not detect file type" 
    fi 
done 

它只是通過文件循環在當前目錄下,運行file -bi並抓住字符串的節可以通過擴展名(「image/png」中的「png」)。然後用擴展名重命名文件。默認情況下,它只是打印出命令,所以取消註釋,如果你感到高興,它是做正確的事情。

1

您也可以嘗試

require 'RMagick' 
puts Magick::Image::read(filename).first.format 

這裏的link到文檔