我有一堆 格式的文件xyz-timestamp.log
,我想将其与普通日志文件之外的不同应用程序关联。
我阅读了 mime 类型,发现我可以添加一个 mime-info 文件来.local/share/mime/packages
描述我的新 mime 类型。
我想出的文件如下所示:
<?xml version="1.0" encoding="utf-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
<mime-type type="text/x-xyz-log">
<comment>XYZ Log</comment>
<glob pattern="xyz*.log" weight="100" />
</mime-type>
</mime-info>
但它没有抓住。似乎只有*.log
模式或特定文件(如sources.list
apt 工作),而不是星号位于中间的模式或特定文件。
免费桌面标准没有提到不支持某些全局功能或您拥有的功能,所以我对此完全一无所知。
更新:
我终于通过使用该元素让它工作了<magic>
。仅凭这一点似乎还不够,因为即使在声明这是它的子类型之后,我仍然被大量普通日志文件击败。只有我自己的球体和魔法的结合才能让它发挥作用。
<?xml version="1.0"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
<mime-type type="application/x-xyz-log">
<comment>XYZ Log</comment>
<sub-class-of type="text/x-log" />
<glob pattern="*.log" />
<magic priority="100">
<match type="string" offset="0:256" value="XYZ-Service started. LOLJK" />
</magic>
</mime-type>
</mime-info>
答案1
这全局模式似乎是故意被简化的;这部分关于该元素指出:
KDE 的 glob 系统取代了 GNOME 和 ROX 的 ext/regex 字段,因为检测“*.ext”形式的模式并将其存储在内部扩展哈希表中是很简单的。两个桌面都没有充分利用正则表达式的全部功能,无论如何,glob 模式更适合文件名匹配。