侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux file命令用法详解:如何判断文件类型和格式

Linux file命令介绍

file命令的全称是file type determination,它可以根据文件的内容和结构来显示文件的类型。它有三种测试方法:文件系统测试、魔法测试和语言测试。文件系统测试是基于stat系统调用的返回值来判断文件是否为空或是否是某种特殊文件。魔法测试是根据文件中固定位置的特定数据来识别文件的格式。语言测试是搜索文件中前几块数据中出现的特定字符串。file命令可以处理一种或多种文件名作为参数,也可以处理标准输入。

适用的Linux版本

file命令在大多数Linux发行版中都是可用的,它是GNU核心工具包的一部分。如果你的系统中没有安装file命令,你可以使用以下命令来安装它:

  • 在基于Debian的系统中(如Ubuntu),使用apt-get install file
  • 在基于Red Hat的系统中(如CentOS),使用yum install file
  • 在基于Arch Linux的系统中(如Manjaro),使用pacman -S file

Linux file命令的基本用法

file命令的语法格式如下:

file [选项] [文件]

它可以接受一个或多个文件名作为参数,也可以使用通配符来匹配多个文件。如果要测试标准输入,可以使用-作为一个文件名参数。

Linux file命令的常用选项说明

file命令有很多选项,可以用来控制输出格式、指定魔法文件、排除某些测试等。这里列出一些最常用的选项:

选项说明
-b, --brief只显示文件类型,不显示文件名
-c, --checking-printout显示魔法文件的解析结果,通常和-m选项一起使用
-e, --exclude 排除某个测试,可以是apptype, ascii, cdf, compress, elf, encoding, soft, tar, text, tokens
-f, --files-from 从中读取要检测的文件名(每行一个),在参数列表之前
-F, --separator 指定文件名和文件类型之间的分隔符,默认是:
-i, --mime显示MIME类型而不是人类可读类型
-k, --keep-going不停止在第一个匹配,继续进行所有测试
-m, --magic-file 指定要使用的魔法文件或目录,是以逗号分隔的路径名
-N, --no-pad不对齐输出中的文件名
-s, --special-files也检测块和字符设备
-z, --uncompress尝试查看压缩文件内部的类型

Linux file命令的实例

下面给出一些file命令的实例,展示它如何检测不同类型的文件。

检测文本文件

[linux@bashcommandnotfound.cn ~]$ file hello.txt
hello.txt: ASCII text

这个例子显示了一个普通的文本文件,它只包含ASCII字符。

检测二进制可执行文件

[linux@bashcommandnotfound.cn ~]$ file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=f8a6c8c4f9a9e3d7b5e6c0a5c8d4f7f0a9b3b1d1, stripped

这个例子显示了一个二进制可执行文件,它是ELF格式的,适用于x86-64架构的Linux系统。

检测压缩文件

[linux@bashcommandnotfound.cn ~]$ file archive.zip
archive.zip: Zip archive data, at least v2.0 to extract

这个例子显示了一个Zip压缩文件,它至少需要v2.0的解压工具来解压。

检测图片文件

[linux@bashcommandnotfound.cn ~]$ file image.jpg
image.jpg: JPEG image data, JFIF standard 1.01, resolution (DPI), density 72x72, segment length 16, Exif Standard: [TIFF image data, big-endian, direntries=10, manufacturer=Canon, model=Canon EOS 5D Mark IV, orientation=upper-left, xresolution=98, yresolution=106, resolutionunit=2, software=Adobe Photoshop Lightroom Classic 9.4 (Windows), datetime=2020:08:31 15:25:04], baseline, precision 8, 5760x3840, frames 3

这个例子显示了一个JPEG图片文件,它包含了一些元数据,如分辨率、制造商、模型、软件等。

检测标准输入

[linux@bashcommandnotfound.cn ~]$ echo "Hello world" | file -
/dev/stdin: ASCII text

这个例子显示了如何使用-来检测标准输入,它也是一个文本文件。

Linux file命令的注意事项

使用file命令时,有一些注意事项:

  • file命令只能根据文件的内容和结构来判断文件类型,它不能保证文件的完整性或正确性。例如,一个损坏的图片文件可能仍然被识别为图片文件,但是无法正常打开或显示。
  • file命令依赖于魔法文件来进行魔法测试,如果魔法文件不完整或不正确,file命令可能无法识别某些文件类型。你可以使用-m选项来指定自定义的魔法文件或目录,也可以使用-c选项来检查魔法文件的格式是否正确。
  • file命令不能识别加密或混淆的文件,它会将它们视为数据文件或未知类型。你需要使用适当的工具来解密或反混淆这些文件,才能查看它们的真实类型。
0

评论区