> 文件与目录管理 > file

file: 文件类型识别指南

通过检查文件的实际字节内容而非扩展名来判断文件类型和 MIME 信息。使用 libmagic 数据库。

概述

file 命令不依赖于文件扩展名,而是通过分析文件内容来判断其类型。它能识别文本/二进制文件、可执行文件格式 (ELF)、压缩文件、图像/音频等多种格式,并可输出 MIME 类型和编码。

主要特点

  • 与扩展名无关,根据实际内容判断
  • 可输出 MIME 类型和字符编码
  • 可选择判断符号链接目标或链接本身
  • 尝试检查压缩文件内部 (-z)

应用场景示例

file 命令特别适用的情况。

  • 识别扩展名错误文件的实际格式(例如:伪装成 .jpg 的 PDF)
  • 识别无扩展名文件的类型
  • 在脚本中根据文件类型进行处理分支
  • 在 Web/网络服务中判断上传文件的 MIME 类型
  • 判断符号链接本身或其目标
  • 分析压缩文件内部内容
  • 在安全分析和取证中识别可执行文件格式

主要选项

按场景分组了常用选项。

1) 基本操作与输出控制

2) 输入/目标指定

3) 魔术数据库/排除/调试

4) 帮助/版本

生成的命令:

请尝试组合命令。

描述:

`file` 执行命令。

通过组合这些选项,您可以与 AI 一起虚拟地执行命令。

使用示例

整理了常用模式作为示例。

基本判断

file /bin/ls

以基本格式输出文件类型

不带文件名简洁输出

file -b /bin/ls

方便脚本处理的简洁输出

MIME 类型/编码

file --mime-type index.html && file --mime-encoding README.md

在 Web/管道中判断类型很有用

检查压缩内部

file -z backup.tar.gz

推测压缩文件的实际内容

符号链接本身 vs 目标

file -h symlink && file -L symlink

检查链接本身 (-h),或跟随目标检查 (-L)

结合 find 批量检查 MIME 类型

find . -type f -print0 | xargs -0 file --mime-type

使用 NUL 分隔符安全地传递文件列表

魔术数据库位置

路径可能因系统和发行版而异。

🪄 默认编译的魔术数据库

/usr/share/file/magic.mgc

大多数发行版的默认位置

📁 源魔术目录

/usr/share/file/magic/

编译前的源规则(非 .mgc 原始文件)

退出代码

在脚本中进行分支处理时请参考。

代码 含义
0 正常:判断成功(或请求操作成功)
1 一般问题:文件不存在/无法访问/判断失败等
2 用法错误或系统错误

安装

大多数系统默认已安装,如果未安装请使用以下命令。

Debian/Ubuntu

sudo apt update && sudo apt install -y file

RHEL/CentOS/Fedora

sudo dnf install -y file

Arch Linux

sudo pacman -S --needed file

openSUSE

sudo zypper install -y file

提示与注意事项

  • 明确使用 `--mime-type` 和 `--mime-encoding` 可以避免因发行版/版本不同而导致的 `-i/--mime` 行为差异。
  • 符号链接处理:要查看链接本身,请使用 `-h`;要查看目标文件,请使用 `-L`。
  • 批量处理时,使用 `find -print0 | xargs -0` 模式可以安全地处理包含空格/换行的文件名。
  • 根据压缩格式的不同,`-z` 可能无法总是检查到内部。如有需要,请先解压缩后再检查。

相关命令

功能上相似或经常一起使用的命令。


相同类别命令