概述
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` 可能無法始終檢查內部內容。如有需要,請先解壓縮後再確認。