file 命令仅打印文件格式

file 命令仅打印文件格式

通常,Linux 中的文件命令提供文件的真实文件类型,无论是否提到扩展名。

例如:

# file cntlm-0.92.3-1.x86_64.rpm
cntlm-0.92.3-1.x86_64.rpm: RPM v3.0 bin i386/x86_64 cntlm-0.92.3-1

# file zip-pack
zip-pack: Zip archive data, at least v2.0 to extract

这给出了文件格式的详细描述,但我只需要格式(如果是 zip,它应该只打印 zip)

如何实现这一点?

答案1

正如您所注意到的,默认情况下的输出file有点冗长:

$ file some.pdf
some.pdf: PDF document, version 1.4

-b选项禁止打印文件名,这有助于:

$ file -b some.pdf
PDF document, version 1.4

如果信息太多,请使用-i选项仅打印 MIME 类型和编码:

$ file -bi some.pdf
application/pdf; charset=binary

或者,如果您只需要类型,请使用--mime-type

$ file -b --mime-type some.pdf
application/pdf

可以找到标准 mime 类型的列表这里。斜线前的单词可以是、、application或等等。如果要从 mime 类型标准中删除第一个单词,可以使用:audiovideoimagecut

$ file -b --mime-type some.pdf | cut -d/ -f2-
pdf

由于从 mime 类型中删除第一个单词可能会留下一些歧义,因此最好保留完整的 mime 类型。

相关内容