如何创建自定义魔术文件数据库

Posted

技术标签:

【中文标题】如何创建自定义魔术文件数据库【英文标题】:How to create a custom magic file database 【发布时间】:2011-11-06 08:43:02 【问题描述】:

unix file 命令使用“魔术”文件数据库来确定文件包含的数据类型,与文件名或扩展名无关。

我需要制作我的自定义魔法数据库以进行测试,但我找不到如何创建一个。

【问题讨论】:

【参考方案1】:

您可以man magic 获取有关如何创建自己的魔法文件的说明。然后使用file -C -m <your magic file>编译,file -m <your magic file>使用。

【讨论】:

如果你有root权限,你可以根据需要编辑magic或magic.mime而不是创建一个新文件 再说一遍,这有什么帮助?如果在手册中,你能举个例子吗? @PauloNeves 语法的细节并不重要,因为手册页(或 link to it )要好得多。 “文件的每一行都指定要执行的测试。测试将从文件中特定偏移量开始的数据与字节值、字符串或数值进行比较。如果测试成功,则会打印一条消息。该行由以下字段组成:偏移量、类型、测试、消息”。 cweiske 在下面有一个示例作为答案。【参考方案2】:

本文中:https://linux.die.net/man/1/file(或man file

搜索magic.mgc进行解释

识别这些文件的信息从编译后的魔术文件 /usr/share/file/magic.mgc 中读取,如果编译文件不存在,则从 /usr/share/file/magic 读取。此外,文件将在 $HOME/.magic.mgc 或 $HOME/.magic 中查找魔术条目。

【讨论】:

这如何帮助发布者创建自定义魔法数据库?【参考方案3】:

我现在使用以下魔法文件进行单元测试:

0       search/1/c      =<?php                  PHP script text
!:mime  text/x-unittest

有了它,每个 php 文件(以 &lt;?php 开头)都将获得 MIME 类型 text/x-unittest


另见http://cweiske.de/tagebuch/custom-magic-db.htm

【讨论】:

/1/c 后面的search 是什么意思?间距重要吗? linux.die.net/man/5/magic 与字符串指令一样,在第一个位置使用正则表达式进行搜索,不区分大小写。

以上是关于如何创建自定义魔术文件数据库的主要内容,如果未能解决你的问题,请参考以下文章

模拟文件数据以测试表单的正确方法是啥?

sh 如何在特定文件夹中找到文件数?

如何使用 Python 计算目录中的文件数

如何使用 gsutil 计算存储桶文件夹中的文件数

构建apk时如何打破文件数[64K]限制?

仅当文件数大于零时,如何在 MSBuild 中运行任务?