非常游戏网
Linux怎么查看文件的MIME类型 Linux下file --mime-type详解

Linux怎么查看文件的MIME类型 Linux下file --mime-type详解

2026-05-29系统教程160444

file -i 输出带 charset 是因其等价于 file --mime-type --mime-encoding,自动拼接为“类型; charset=编码”格式;需纯类型时应使用 file --mime-type,需纯编码时用 file --mime-encoding。

直接用 file -ifile --mime-type 就能拿到准确的 MIME 类型,但要注意默认输出包含编码信息,真要纯类型得加 --mime-type 单独取值。

为什么 file -i 输出里带 charset=...

file -i 实际等价于 file --mime-type --mime-encoding,所以会拼出类似 text/plain; charset=utf-8 这样的完整字符串。这在 Web 服务或脚本里有时多余——比如你只关心是不是 image/jpeg,不想处理分号后的内容。

  • 要纯类型(不含编码):用 file --mime-type 文件名
  • 要纯编码(不含类型):用 file --mime-encoding 文件名
  • 想一行里同时看两者但自己控制格式:用 file -i + cut -d';' -f1 切分

file --mime-typefile -i 在脚本里怎么选?

关键看下游工具是否接受完整 MIME 字符串。比如 curl -H "Content-Type: $(file -i -b file.jpg)" 可能失败,因为 -b 不影响 -i 的拼接逻辑,依然带 charset;而 curl 通常只要类型部分。

  • curlwget 或 HTTP API 传类型:优先 file --mime-type -b 文件名-b 去掉文件名前缀,--mime-type 去掉编码)
  • 做类型判断分支(如 if [[ "$(file --mime-type -b f)" == "application/pdf" ]]):必须用 --mime-type-i 会因编码差异导致匹配失败
  • 调试时快速扫一眼:file -i 最省事,信息全

压缩包里的文件也能查 MIME 类型吗?

可以,但得加 -z 参数,否则 file 默认只报外层是 application/x-gzip 这类容器类型。

Trae linux

Trae Linux 官方版本现已全面上线,开发者可直接访问 Trae 官网(trae.cn 国内版或 trae.ai 国际版)获取专属安装包。该版本完美适配主流 Linux 发行版,提供 .deb(适配 Ubuntu/Debian)、.rpm(适配 RHEL/Fedora)以及通用 .tar.gz 格式,并全面支持 x64 与 ARM64 架构。

  • archive.tar.gz 本身类型:file --mime-type archive.tar.gzapplication/gzip
  • 查它解压后第一个文件的类型:file -z --mime-type archive.tar.gztext/x-shellscript(如果里面是 shell 脚本)
  • -z.zip.bz2.xz 都有效,但对加密压缩包或损坏包可能返回 data

符号链接会影响 MIME 类型识别结果吗?

默认会跟随(-L 是默认行为),所以 file --mime-type link.sh 实际检查的是它指向的文件。如果你明确想确认链接本身的属性(比如链接是否损坏、指向是否合法),得加 -h

  • 查真实内容类型(推荐日常用):file --mime-type link.sh
  • 查链接文件自身(元数据):file -h --mime-type link.sh → 输出 inode/symlink
  • 注意:-h-L 互斥,-L 是默认,不用显式写

真正容易被忽略的是 --mime-type--mime-encoding 的分离设计——很多人卡在正则匹配失败,其实只是没意识到 -i 拼出来的字符串结构不干净。