027 file命令

命令说明

file 用于探测文件的真实类型(通过读取文件头 magic number),而不是依赖扩展名。可识别文本、二进制、图片、压缩包、脚本等。

语法

file [选项]... 文件...

常用参数

参数说明
-b不打印文件名,只输出类型(brief)
-i以 MIME 类型输出,如 text/plain; charset=utf-8
-z查看压缩文件内部的真实类型
-L跟踪符号链接查看目标类型
-f 列表对文件中列出的路径逐个检测
-m 规则使用自定义 magic 规则文件

使用示例

$ file app.log

查看文件类型

$ file image.png

识别为 PNG image data...

$ file -i script.sh

输出 MIME 类型 text/x-shellscript

$ file -z backup.tar.gz

查看压缩包内部类型

$ file -b /etc/passwd

只输出类型不带文件名

$ file -L link

查看符号链接指向的真实文件类型

$ find . -type f | xargs file | grep ASCII

批量筛选文本文件

实用技巧

  • 扩展名不可信:一个 .jpg 可能是 .png 或可执行脚本,用 file 确认真实类型。
  • 排查“上传文件伪装”时常用:file upload.bin 判断是否为脚本或 ELF。
  • -i 输出 MIME 类型适合脚本判断;-b 适合管道处理。
  • 对目录 file 会输出 directory;对设备/管道会输出对应类型。