識別文件類型,不依賴于后綴名。
該命令將按序運行三套識別模式,直至返回得到測試結果。
預設模式下,只分析普通文件的具體類型,不會嘗試讀取特殊文件的內容,除非指定-s
參數。
識別模式
- 文件系統測試:檢驗文件是否為空文件,或是否為某一類特殊系統文件,如socket、軟鏈接、FIFO等。
- magic file 測試:檢驗文件是否匹配某一類特定格式(通常為文件頭附近的特殊字節,稱為 magic number),識別為某一類已知的二進制文件,如可執行文件,識別規則在
/usr/share/file/magic.mgc
等目錄中。 - 語言測試:檢驗文件是否為文本文件,識別其內容字符集及文本類型屬性(如使用非標準的行結束符,或包含轉義短句等),確定文件使用的字符集后,進一步推斷可能對應的編程語言。該測試也包括檢查文件是否為 tar 文檔等雜項類型。如無法判斷其使用的字符集,則類型結果推定為
data
返回結果類型
- text:表示文件全由可打印字符和部分控制字符組成,并且很可能可通過 ASCII 終端訪問閱讀
- executable:可用于UNIX內核等直接運行的編譯程序
- data:其他不屬于上述兩類的二進制文件(上述三組測試均無法確定的文件類型)
options
-b 摘要模式,不顯示文件名
-F separator 指定文件名:類型
結果分隔符,默認為冒號:
-f namefile 逐行讀取 namefile 文件,并逐一識別其對應的文件類型,namefile 為空文件或指定為-
時,將讀取標準輸入。該命令會優先執行文本解析,并作為目標文件列表參數提供,因此必須作為最后一個參數進行定義
-L 跟蹤符號鏈接,顯示其指向的文件類型(默認選項)
-h 不跟蹤符號鏈接,顯示其本身類型
-i 不判斷顯示普通文件的子類型
-I / --mime 顯示 MIME 類型格式
--mime-type 僅顯示 MIME 類型中的文件類型信息(忽略編碼格式等)
-k 執行完整匹配識別模式,打印所有判斷結果
-p 分析時,不更新文件的 atime
-s 目標文件為塊文件或字符文件時,嘗試讀取其內容,主要用于讀取位于另一 Raw 格式磁盤、分區的數據文件類型
-z 嘗試讀取壓縮文件
magic 測試支持
-c 打印 magic 測試的執行過程輸出,常用于調試新編輯的 magic 文件
-C 以file -C [-m magic_list]
方式執行,對目標 magic 文件編譯出 magic.mgc 文件
-m magic_list 使用指定的多個 magic 文件或其目錄,使用冒號:
分割(優先調用已編譯版本)
-d 使用系統定義的 magic 文件測試
-M magic_list 與-m
相同,但不使用系統定義的 magic 文件測試