我正在尝试查找文件的 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 重命名为jpg
,file
则会正确报告“image/png”,但xdg-mime
和mimetype
两者均会报告“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”很可能代表“压缩”文件格式,因此第一个也是正确的。