如何使用Linux确定文件的文件类型

大多数人看着文件的扩展名,然后猜测该扩展名的文件类型。 例如,当你看到一个扩展名为gif,jpg,bmp或png 的文件时,你会想到一个图像文件,并且当你看到一个带有zip扩展名的文件时,你认为该文件已经使用zip压缩实用程序进行了压缩

事实上,一个文件可以有一个扩展名,但是完全不同,如果一个文件没有扩展名,那么如何确定文件类型?

在Linux中,您可以使用file命令找出真正的文件类型。

文件命令如何工作

根据文档,文件命令针对一个文件运行三组测试:

第一组返回有效响应的测试会导致打印文件类型。

文件系统测试检查来自stat系统调用的返回。 该程序检查文件是否为空以及它是否是特殊文件。 如果在系统头文件中找到文件类型,它将作为有效文件类型返回。

神奇测试检查文件的内容,特别是在开始处的几个字节,这有助于确定文件类型。 有各种文件用于帮助匹配文件与其文件类型,这些文件存储在/ etc / magic,/ usr / share / misc / magic.mgc,/ usr / share / misc / magic中。 您可以通过将文件放置在您的主文件夹中,名为$ HOME / .magic.mgc或$ HOME / .magic来覆盖这些文件。

最后的测试是语言测试。 该文件被检查以查看它是否是文本文件。 通过测试文件的前几个字节,您可以推断出它是ASCII,UTF-8,UTF-16还是另一种将文件确定为文本文件的格式。 一旦推导出字符集,文件就会针对不同的语言进行测试。 例如文件ac程序。

如果没有任何测试工作,输出只是数据。

如何使用文件命令

文件命令可以如下使用:

文件文件名

例如,假设您有一个名为file1的文件,您可以运行以下命令:

文件file1

输出结果如下所示:

file1:PNG图像数据,640 x 341,8位/彩色RGB,非隔行扫描

显示的输出将file1确定为图像文件或更确切地说是便携式网络图形(PNG)文件。

不同的文件类型产生不同的结果如下:

自定义来自文件命令的输出

默认情况下,file命令提供文件名,然后提供文件上方的所有详细信息。 如果您只是想重复使用没有文件名的详细信息,请使用以下开关:

文件-b文件1

输出结果如下所示:

PNG图像数据,640 x 341,8位/彩色RGB,非隔行扫描

您也可以更改文件名和类型之间的分隔符。

默认情况下,分隔符是冒号(:),但您可以将其更改为任何您喜欢的内容,例如管道符号,如下所示:

文件-F'|' 文件1

输出现在是这样的:

文件1 | PNG图像数据,640 x 341,8位/彩色RGB,非隔行扫描

处理多个文件

默认情况下,您将针对单个文件使用file命令。 但是,您可以指定一个文件名,其中包含要由文件命令处理的文件列表:

作为一个例子,使用nano编辑器打开一个名为testfiles的文件,并将这些行添加到它:

保存该文件并运行以下文件命令:

文件-f测试文件

输出结果如下所示:

/ etc / passwd:ASCII文本
/etc/pam.conf:ASCII文本
/ etc / opt:目录

压缩文件

默认情况下,当你对一个压缩文件运行file命令时,你会看到如下输出:

file.zip:ZIP归档数据,至少要提取V2.0

虽然这告诉你该文件是一个档案文件,但你并不真正了解该文件的内容。 您可以查看zip文件以查看压缩文件中文件的文件类型。

以下命令针对ZIP文件内的文件运行file命令:

文件-z文件名

输出现在将显示归档文件中的文件类型。

概要

通常,大多数人只需使用file命令来查找基本文件类型,但要了解有关file命令提供的所有可能性的更多信息,请在终端窗口中键入以下内容:

男人文件