我正在尝试查找文件的 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
Run Code Online (Sandbox Code Playgroud)
为什么我有不同的答案?我应该依赖哪一个?
为什么有区别?
谢谢!
更新(由 cipricus):
iso文件示例:
file --mime-type -b MY_ISO.iso
Give application/x-iso9660-image
,这对用于上下文菜单操作的桌面文件没有用。
xdg-mime query filetype MY_ISO.iso
Give model/x.stl-binary
,它与 te 相同的桌面一起用于上下文菜单操作。
xdg-mime
@jdpipe 关于和的行为似乎是正确的file
。\xe2\x80\x82还有另一个实用程序mimetype
,其行为与 类似xdg-mime
。
至于“信任”哪个实用程序,通常只使用mimetype
或 就可以了xdg-mime
。\xe2\x80\x82但是,如果您担心文件的扩展名可能错误,请使用,file
因为它会在报告其类型之前检查文件的内容。\xe2\x80\x82例如,如果 apng
重命名为jpg
,则file
可以正确报告“image/png”,但xdg-mime
两者mimetype
都错误地报告“image/jpeg”。
正如@db429 所指出的,对于您引用的文件来说,这两个实用程序似乎都是正确的kmz
。\xe2\x80\x82Google 地球会创建kmz
文件,这些文件也被重命名zip
为文件。\xe2\x80\x82 您要对信息执行的操作决定了哪个应用程序使用。\xe2\x80\x82如果您想提取内容,则file
告诉您继续使用unzip
。\xe2\x80\x82如果您想按最初的预期查看和使用信息,请使用 Google 地球或其他有能力的程序使用kmz
文件。
关于该iso
文件,我不知道为什么xdg-mime
告诉你model/x.stl-binary
。\xe2\x80\x82在我的计算机上,它报告application/x-cd-image
。\xe2\x80\x82此外,file
不使用该--mime-type
标志会报告确认它是某种类型的磁盘映像的附加信息。\ xe2\x80\x82也许更新 mime 数据库会有所帮助:
sudo update-mime-database /usr/share/mime\n
Run Code Online (Sandbox Code Playgroud)\n
xdg-mime
来自的实用程序xdg-utils
是一个更全面的程序,它考虑到了您的桌面环境(GNOME 及其亲属,或 KDE)。在某些情况下,它会调用file
实用程序,但在其他情况下,它会查找特定系统的 mimetype 数据库。
file
据我所知,该实用程序只查看您的文件内部,而不查看文件名。因此,该.kmz
文件被识别为 zip 文件。file
使用与特定文件类型相关联的“魔术数字”,例如,P5
文件开头的魔术字符串与来自 Netpbm 库的 PGM 图像相关联。
mimetype 数据库知道使用文件扩展名标识的更高级别的文件类型,并且可以由用户自定义。安装新程序时,mimetype 数据库会得到扩展,并会给出在安装某些软件之前可能不会给出的答案。据我所知,该行为不会发生在file
命令中。
如果你想阅读更多,xdg-mime
细节在这里——源代码。您可以看到它file
在某些情况下会调用。
归档时间: |
|
查看次数: |
1256 次 |
最近记录: |