如何从命令行获取文件的MIME类型?

我正在尝试从命令行获取文件的 MIME 类型,并将其作为打印字符串(例如 application/vnd.oasis.opendocument.spreadsheet)。

我查找了如何做到这一点,并找到了 xdg-mime 命令。

通过阅读手册页(man xdg-mime),看起来我应该运行 xdg-mime query filetype FILE。然而,无论我用任何文件运行此命令,它都不会打印任何内容并退出。

有办法解决这个问题吗?还有其他的命令可以替代吗?

4个回答

使用file --mime-type -b filename来查看文件的 MIME 类型。
想要更多的提示,请参考file --help

这个页面上的很好的答案可以像下面这样放在一个函数或脚本中:

示例

$ mime_type.sh /etc/passwd  
text/plain

mime_type.sh

function mime_type()
{
  file --mime-type -b $*
}

mime_type $*

mimetype /path/to/file

在18.04版本中进行了测试。

mimetype 在14.04及以上版本中可用。 - Mooncake
2似乎只根据文件扩展名来检测MIME类型 - Dark Star1
在20.04版本中可以工作,但是速度比file --mime-type慢了一百万倍。 - Fran Marzoa