为什么“file --mime-type”和“xdg-mime query filetype”的结果有区别?

为什么“file --mime-type”和“xdg-mime query filetype”的结果有区别?

我正在尝试查找文件的 mime 类型。我使用了“file --mime-type”或“xdg-mime”,但得到的答案不同?我不确定我是否理解了?

$ file --mime-type -b gePlugin.kmz 
  application/zip
$ xdg-mime query filetype gePlugin.kmz 
  application/vnd.google-earth.kmz

为什么我有不同的答案?我应该依赖哪一个?

为什么会有差异呢?

谢谢!

答案1

@jdpipe 似乎是正确的xdg-mime关于和的行为file。还有另一个实用程序mimetype的行为与 类似xdg-mime

至于该“信任”哪个实用程序,通常只需使用mimetype或就可以了xdg-mime 然而,如果你担心文件扩展名错误,请使用file因为它会在报告文件类型之前检查文件的内容。例如,如果png将 a 重命名为jpgfile则会正确报告“image/png”,但xdg-mimemimetype两者均会报告“image/png”。错误地报告“image/jpeg”。

作为由@db429 指出,看来这两个实用程序对于kmz您引用的文件都是正确的。Google Earth 创建kmz文件,这些文件也是重命名的zip文件。您要对信息做什么决定了要使用哪个应用程序。如果您想提取内容,则file告诉您继续使用unzip。如果您想按原计划查看和使用信息,请使用 Google Earth 或其他能够使用文件的程序kmz

关于iso文件,我不知道为什么xdg-mime会告诉你model/x.stl-binary。在我的电脑上,它报告application/x-cd-image。此外,使用file不带--mime-type标志的会报告其他信息,确认它是某种类型的磁盘映像。更新 mime 数据库可能会有所帮助:

sudo update-mime-database /usr/share/mime

答案2

实用xdg-mime程序来自xdg-utils是一个更全面的程序,它会考虑您的桌面环境(GNOME 及其相关环境,或 KDE)。在某些情况下,它会调用该file实用程序,但在其他情况下,它会查找特定系统的 mimetype 数据库。

file据我所知,该实用程序仅看起来里面您的文件,它不会查看文件名。因此,该.kmz文件被识别为 zip 文件。file使用与特定文件类型关联的“魔法数字”,例如,P5文件开头的魔法字符串与 Netpbm 库中的 PGM 图像相关联。

mimetype 数据库了解使用文件扩展名标识的高级文件类型,并且可以由用户自定义。安装新程序时,mimetype 数据库会扩展,并会给出在安装某些软件之前可能没有给出的答案。据我所知,该命令不会发生这种情况file

如果你想了解更多,xdg-mime详细信息在这里——源代码。你可以看到它file在某些情况下会调用。

答案3

据我所知,18.04(更多这里):

xdg-mime query filetype YOURFILE

是可靠的。

如果您需要 mime 类型与某些文件管理器(如 Nautilus 或 Dolphin)进行上下文菜单操作,请在该文件管理器中的文件“属性”下查找。

在海豚中:

在此处输入图片描述

答案4

经过简短的网络搜索,google earth file format答案是 xdg-mime,它有更精确的答案,但“z”很可能代表“压缩”文件格式,因此第一个也是正确的。

相关内容