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