识别文件类型,不依赖于后缀名。
该命令将按序运行三套识别模式,直至返回得到测试结果。
预设模式下,只分析普通文件的具体类型,不会尝试读取特殊文件的内容,除非指定-s
参数。
识别模式
- 文件系统测试:检验文件是否为空文件,或是否为某一类特殊系统文件,如socket、软链接、FIFO等。
- magic file 测试:检验文件是否匹配某一类特定格式(通常为文件头附近的特殊字节,称为 magic number),识别为某一类已知的二进制文件,如可执行文件,识别规则在
/usr/share/file/magic.mgc
等目录中。 - 语言测试:检验文件是否为文本文件,识别其内容字符集及文本类型属性(如使用非标准的行结束符,或包含转义短句等),确定文件使用的字符集后,进一步推断可能对应的编程语言。该测试也包括检查文件是否为 tar 文档等杂项类型。如无法判断其使用的字符集,则类型结果推定为
data
返回结果类型
- text:表示文件全由可打印字符和部分控制字符组成,并且很可能可通过 ASCII 终端访问阅读
- executable:可用于UNIX内核等直接运行的编译程序
- data:其他不属于上述两类的二进制文件(上述三组测试均无法确定的文件类型)
options
-b 摘要模式,不显示文件名
-F separator 指定文件名:类型
结果分隔符,默认为冒号:
-f namefile 逐行读取 namefile 文件,并逐一识别其对应的文件类型,namefile 为空文件或指定为-
时,将读取标准输入。该命令会优先执行文本解析,并作为目标文件列表参数提供,因此必须作为最后一个参数进行定义
-L 跟踪符号链接,显示其指向的文件类型(默认选项)
-h 不跟踪符号链接,显示其本身类型
-i 不判断显示普通文件的子类型
-I / --mime 显示 MIME 类型格式
--mime-type 仅显示 MIME 类型中的文件类型信息(忽略编码格式等)
-k 执行完整匹配识别模式,打印所有判断结果
-p 分析时,不更新文件的 atime
-s 目标文件为块文件或字符文件时,尝试读取其内容,主要用于读取位于另一 Raw 格式磁盘、分区的数据文件类型
-z 尝试读取压缩文件
magic 测试支持
-c 打印 magic 测试的执行过程输出,常用于调试新编辑的 magic 文件
-C 以file -C [-m magic_list]
方式执行,对目标 magic 文件编译出 magic.mgc 文件
-m magic_list 使用指定的多个 magic 文件或其目录,使用冒号:
分割(优先调用已编译版本)
-d 使用系统定义的 magic 文件测试
-M magic_list 与-m
相同,但不使用系统定义的 magic 文件测试