我在需要识别某些文件格式的地方编写项目。对于某些格式,我找到了可以轻松识别的签名(mp3、ogg),而对于另一种格式(如 MPEG ADTS),我有一个大问题——我只是找不到可以用于它的签名类型。
我发现 Linux 环境的 File 实用程序可以做到这一点。我试图在源代码中搜索它,但我什么也没找到。
我发现文件实用程序将其数据库保存在 magic.mgc 文件中。但它以二进制形式存在。看起来像:
有人可能知道如何以纯文本格式查找该数据库吗?
该实用程序不是特定于 Linux 的实用程序。它是最初由 Ian Darwin 编写的 UN*X 文件命令的版本。二进制.mgc
文件是从一堆源文件生成的。
你的 Linux 发行版可能有它的源代码包;从哪里获得该软件包以及如何安装它取决于您使用的发行版。
生成文件的源文件.mgc
也可能在您的发行版中可用,而无需安装源包file
;如果是这样,您可以使用该命令使用标志file
生成它。-C
我在我的 Ubuntu 12.04 虚拟机上看不到它们明显的地方,因此可能需要安装一些其他软件包(安装了file
它本身)。(在 OS X 上,它们位于目录中/usr/share/file/magic
。)
或者,您可以下载该文件的标准版本(可能已被您的发行版修改,因此您可能不需要该版本)并修改和构建它。
请注意,在某些版本的 UN*X 系统上,该file
命令完成的大部分工作是在“libmagic”库中的库例程中完成的;查看您的发行版是否具有或可以安装它(例如,尝试man libmagic
)以及它是否可以为您完成这项工作。