2013-05-20 63 views
6

我可以用file命令識別文件類型。我可以得到文件的默認(首選)擴展名嗎?獲取默認/首選文件擴展名

例如,對於

tmp_206.file: GIF image data, version 89a, 17 x 17 
tmp_202.file: ASCII text, with very long lines, with no line terminators 

這將是.gif.txt

我知道分機不用於UNIX無所謂,但他們做的事對我來說

+3

有沒有默認的擴展名。但是:HTTP服務器嘗試將擴展映射到MIME類型。你可以[重新使用該映射來選擇可能的擴展名](http://stackoverflow.com/questions/7609208/complete-list-of-mime-type-file-extension-mapping)。 –

+2

你可以用'file --mime-type '得到mime類型。 –

+0

@Banthar是的你是對的,我意識到後我刪除了我的評論:) – robertklep

回答

0

如果你有一組相當有限的擴展,創建一個從file輸出到您的首選擴展映射並不難。

case $(file - <"$file") in 
    '-: GIF image'*) ext=gif ;; 
    '-: ASCII text'*) ext=txt ;; 
    # etc 
esac 
2

某些文件類型支持超過1個擴展名,如jpe,jpeg,jpg等用於jpeg文件。

你可以做的是先取得MIME類型使用:

mimleType=$(awk -F';' 'NF>1{print $1}' < <(file -bi logo.jpeg)) 

然後用這個awk來獲取文件擴展名:

awk -v mt=$mimeType '$1==mt{print $2}' /Applications/MAMP/conf/apache/mime.types 

OUTPUT:

jpeg