首頁 > 檔案與目錄管理 > file

file: 文件類型識別指南

檢查文件的實際字節內容而非擴展名,以判斷文件類型和 MIME 資訊。使用 libmagic 資料庫。

概述

file 命令不依賴文件擴展名,而是通過分析文件內容來判斷其類型。它能識別文本/二進制、可執行文件格式 (ELF)、壓縮文件、圖片/音頻等多種格式,並能輸出 MIME 類型和編碼。

主要特點

  • 與擴展名無關,依實際內容判斷
  • 可輸出 MIME 類型和字符編碼
  • 可選擇判斷符號連結的目標或連結本身
  • 嘗試檢查壓縮文件內部 (-z)

應用場景示例

file 命令特別有用的情況。

  • 識別擴展名錯誤文件的實際格式 (例如:偽裝成 .jpg 的 PDF)
  • 識別沒有擴展名的文件類型
  • 在腳本中根據文件類型進行處理分支
  • 在網絡服務中判斷上傳文件的 MIME 類型
  • 判斷符號連結本身或其目標
  • 分析壓縮文件內部內容
  • 在安全分析和鑑識中識別可執行文件格式

主要選項

按情況分組的常用選項。

1) 基本操作與輸出控制

2) 輸入/目標指定

3) 魔術資料庫/排除/調試

4) 幫助/版本

生成的命令:

請試著組合命令。

這個 Django 應用程序是一個技術指南文檔,旨在為用戶輕鬆解釋 Linux 的各種命令。

`file` 執行命令。

請將上述選項組合在一起,與 AI 一同虛擬執行命令。

使用示例

整理了常用模式的示例。

基本判斷

file /bin/ls

以基本格式輸出文件類型

不帶文件名簡潔輸出

file -b /bin/ls

便於腳本處理的簡潔輸出

MIME 類型/編碼

file --mime-type index.html && file --mime-encoding README.md

在網頁/管道中判斷類型很有用

檢查壓縮文件內部

file -z backup.tar.gz

推測壓縮文件的實際內容

符號連結本身 vs 目標

file -h symlink && file -L symlink

檢查連結本身 (-h) 或追蹤目標檢查 (-L)

與 find 結合批量確認 MIME 類型

find . -type f -print0 | xargs -0 file --mime-type

使用 NUL 分隔符安全地傳遞文件列表

魔術資料庫位置

路徑可能因系統和發行版而異。

🪄 默認編譯的魔術資料庫

/usr/share/file/magic.mgc

大多數發行版的默認位置

📁 源魔術目錄

/usr/share/file/magic/

編譯前的源規則 (非 .mgc 原始文件)

退出代碼

在腳本中進行分支處理時請參考。

代碼 含義
0 正常:判斷成功 (或請求的操作成功)
1 一般問題:文件不存在/無法訪問/判斷失敗等
2 用法錯誤或系統錯誤

安裝

大多數系統已預裝,如果沒有,請使用以下命令安裝。

Debian/Ubuntu

sudo apt update && sudo apt install -y file

RHEL/CentOS/Fedora

sudo dnf install -y file

Arch Linux

sudo pacman -S --needed file

openSUSE

sudo zypper install -y file

提示與注意事項

  • 明確使用 `--mime-type` 和 `--mime-encoding` 可以避免因發行版/版本不同而導致的 `-i/--mime` 行為差異。
  • 符號連結處理:要查看連結本身請使用 `-h`,要查看目標文件請使用 `-L`。
  • 批量處理時,使用 `find -print0 | xargs -0` 模式可以安全處理包含空格/換行的文件名。
  • 根據壓縮格式,`-z` 可能無法始終檢查內部內容。如有需要,請先解壓縮後再確認。

相關命令

功能上相似或經常一起使用的命令。


相同類別命令