大多数人看着文件的扩展名,然后猜测该扩展名的文件类型。 例如,当你看到一个扩展名为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)文件。
不同的文件类型产生不同的结果如下:
- ISO文件类型 - DOS / MBR引导扇区ISO 9660 CD-Rom文件系统数据“标签”(可启动); 分区2:ID = 0xef,开始CHS(0x3ff,254,63),结束CHS(0x3ff,4,63)startsector 1496,4736扇区
- ODS文件类型 - OpenDocument电子表格
- PDF文件类型 - PDF文档,版本1.4
- CSV文件类型 - 带有非常长的行的ASCII文本,带有CRLF行指示符
自定义来自文件命令的输出
默认情况下,file命令提供文件名,然后提供文件上方的所有详细信息。 如果您只是想重复使用没有文件名的详细信息,请使用以下开关:
文件-b文件1
输出结果如下所示:
PNG图像数据,640 x 341,8位/彩色RGB,非隔行扫描
您也可以更改文件名和类型之间的分隔符。
默认情况下,分隔符是冒号(:),但您可以将其更改为任何您喜欢的内容,例如管道符号,如下所示:
文件-F'|' 文件1
输出现在是这样的:
文件1 | PNG图像数据,640 x 341,8位/彩色RGB,非隔行扫描
处理多个文件
默认情况下,您将针对单个文件使用file命令。 但是,您可以指定一个文件名,其中包含要由文件命令处理的文件列表:
作为一个例子,使用nano编辑器打开一个名为testfiles的文件,并将这些行添加到它:
- / etc / passwd文件
- /etc/pam.conf中
- 在/ etc /选择
保存该文件并运行以下文件命令:
文件-f测试文件
输出结果如下所示:
/ etc / passwd:ASCII文本
/etc/pam.conf:ASCII文本
/ etc / opt:目录
压缩文件
默认情况下,当你对一个压缩文件运行file命令时,你会看到如下输出:
file.zip:ZIP归档数据,至少要提取V2.0
虽然这告诉你该文件是一个档案文件,但你并不真正了解该文件的内容。 您可以查看zip文件以查看压缩文件中文件的文件类型。
以下命令针对ZIP文件内的文件运行file命令:
文件-z文件名
输出现在将显示归档文件中的文件类型。
概要
通常,大多数人只需使用file命令来查找基本文件类型,但要了解有关file命令提供的所有可能性的更多信息,请在终端窗口中键入以下内容:
男人文件