Magic文件的内容是由4-5列的纯文本组成的。文件中允许包含空行,但会被忽略。注释行使用井号(#)来引导。剩余的行按下面列被分解:
列
描述
1
开始检查的起始字节,">"表示基于前面的非">"行。
2
匹配的数据类型
byte
单个字符
short
机器字节顺序的16位整数
long
机器字节顺序的32位整数
string
任意长度的字符串
date
长整型的日期(从UNIX纪元/1970以来的秒数)
beshort
big-endian 16位整数
belong
big-endian 32位整数
bedate
big-endian 32位整型日期
leshort
little-endian 16位整数
lelong
little-endian 32位整数
ledate
little-endian 32位整型日期
3
匹配的数据内容
4
如果匹配文件的MIME类型
5
如果匹配文件的MIME编码方式(可选)
例如,下面的Magic文件行可以认出一些音频格式:
# Sun/NeXT audio data
0 string .snd
>12 belong 1 audio/basic
>12 belong 2 audio/basic
>12 belong 3 audio/basic
>12 belong 4 audio/basic
>12 belong 5 audio/basic
>12 belong 6 audio/basic
>12 belong 7 audio/basic
>12 belong 23 audio/x-adpcm
还有下面的示例可以区分带*.doc扩展名的文件到底是Microsoft Word文档还是Frame Maker文档(两种有相同后缀名但不兼容文件格式)。
# Frame
0 string \
0 string \
0 string \
0 string \
0 string \
0 string \
0 string \
# MS-Word
0 string \376\067\0\043 application/msword
0 string \320\317\021\340\241\261 application/msword
0 string \333\245-\0\0\0 application/msword
一个可选的MIME编码方式可以包含在第五列上。例如下面的行可以认出gzip压缩文件并设定他们的编码方式。
# gzip (GNU zip, not to be confused with
# [Info-ZIP/PKWARE] zip archiver)
0 string \037\213 application/octet-stream x-gzip