You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写满足多条件匹配逻辑的file工具自定义magic文件?

实现file工具自定义magic文件的多条件组合匹配

我完全懂你这种困惑——man magic里的语法确实有点绕,尤其是要实现这种「多位置多选项的AND逻辑」的时候。我来给你拆解一下怎么写出符合需求的自定义magic规则,直接上例子更直观。

核心规则思路

你的需求是:(字节0是A/B/C) AND (字节1-3是DEF/GHI/JKL),对应file magic的写法可以拆成两层:

  1. 先匹配字节0的OR条件,标记候选类型
  2. 仅当前面的候选条件满足时,再匹配字节1-3的OR条件,最终确认类型

具体的自定义magic代码

把下面的内容保存为my_custom.magic文件:

# 自定义文件类型:满足双条件组合的文件
0	string	A	My Custom Combined File
0	string	B	My Custom Combined File
0	string	C	My Custom Combined File
>1	string	DEF	My Custom Combined File
>1	string	GHI	My Custom Combined File
>1	string	JKL	My Custom Combined File

规则解释

  • 前3行:0 string X 表示检查偏移0字节的位置是否等于字符串X(A/B/C),如果匹配,就先把文件标记为候选类型My Custom Combined File。
  • 后3行:>1 string Y 中的>符号是关键——它表示只有前面的条件已经匹配成功时,才会执行这个检查(偏移1字节的位置是否等于Y,即DEF/GHI/JKL)。
  • 只有当某一行0位置的条件 + 某一行>1位置的条件同时满足时,file才会最终输出这个自定义类型。

测试方法

用以下命令测试你的目标文件:

file -m my_custom.magic your_test_file.bin

额外小技巧

  • 如果需要忽略大小写匹配,可以在规则前加i标记,比如:0 i string a My Custom Combined File
  • 如果要匹配字节而非字符串,把string换成byte(单个字节)或beshort/lelong等(多字节数值类型)

我之前也踩过这个坑,一开始以为要写复杂的嵌套语法,后来发现用这种分层的规则就轻松实现了AND+OR的组合逻辑。

内容的提问来源于stack exchange,提问作者mivk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:40:52