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 无关紧要,但它们对我很重要
某些文件类型支持 jpeg 文件的多个扩展名,例如 jpe、jpeg、jpg 等。
您可以做的是首先使用以下方式获取 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
输出:
jpeg
如果您有一组合理有限的扩展,那么创建从file
输出到首选扩展的映射并不难。
case $(file - <"$file") in
'-: GIF image'* ) ext=gif ;;
'-: ASCII text'* ) ext=txt ;;
# etc
esac