你常常在整理檔案時看著奇怪的檔名而感到困惑嗎?
常常解題時看不出來下載的檔案到底是什麼嗎?
這次要介紹的是一個用來解決這些煩惱的Linux 指令 — file。
在 Linux 系統中,file 指令用來判斷並顯示檔案的型態。
不同於單純依照副檔名判斷(例如 .txt、.jpg),file 是透過檔案的 魔術數 (magic number)、檔頭資訊、編碼特徵等方式來判斷,所以就算把一張圖片改成 test.txt,它依然能辨識出檔案實際上是 JPEG 格式。file [options] 檔名
判斷單一檔案型態
file test.txt
輸出:
test.txt: ASCII text
表示 test.txt 是一個純文字檔。
判斷圖片檔
file image.png
輸出:
image.png: PNG image data, 800 x 600, 8-bit/color RGB, non-interlaced
判斷二進位檔
file a.out
輸出:
a.out: ELF 64-bit LSB executable, x86-64
-b
( brief ) : 僅顯示檔案型態,不顯示檔名。
file -b test.txt
輸出:
ASCII text
-i
( mime-type ) : 顯示檔案的 MIME 類型。
Multipurpose Internet Mail Extensions,用來描述檔案型態的標準,最早是郵件傳輸協定用的。
file -i test.txt
輸出:
test.txt: text/plain; charset=us-ascii
-f
( file list ) : 讓 file 從一個清單檔中讀取要判斷的檔案名稱。
file -f list.txt
會顯示 list.txt 檔案中每個命名檔案類型。
-z
(檢查壓縮檔內部) : 嘗試判斷壓縮檔內容。
file -z file.gz
-L
( follow symlink ) : 判斷符號連結指向的實際檔案的型態。
file -L symlink.txt
-m
( magic file ) : 依據魔數 ( magic number ) 來判斷檔案。
預設情況下,它會用系統內建的 magic database,也可以自訂
file -m textfile # 用預設的
file -m mymagic textfile # 用 mymagic 裡的規則來解析 textfile
檢查整個資料夾
file *
列出當前資料夾內所有檔案的型態。
過濾結果
file * | grep image
找出目前資料夾下所有圖片檔。
file 後也可以用路徑
file /var/mail