大多數人看著文件的擴展名,然後猜測該擴展名的文件類型。 例如,當你看到一個擴展名為gif,jpg,bmp或png 的文件時,你會想到一個圖像文件,並且當你看到一個帶有zip擴展名的文件時,你認為該文件已經使用zip壓縮實用程序進行了壓縮 。
事實上,一個文件可以有一個擴展名,但是完全不同,如果一個文件沒有擴展名,那麼如何確定文件類型?
在Linux中,您可以使用file命令找出真正的文件類型。
文件命令如何工作
根據文檔,文件命令針對一個文件運行三組測試:
- 文件系統測試
- 魔術測試
- 語言測試
第一組返回有效響應的測試會導致打印文件類型。
文件系統測試檢查來自stat系統調用的返回。 該程序檢查文件是否為空以及它是否是特殊文件。 如果在系統頭文件中找到文件類型,它將作為有效文件類型返回。
神奇測試檢查文件的內容,特別是在開始處的幾個字節,這有助於確定文件類型。 有各種文件用於幫助匹配文件與其文件類型,這些文件存儲在/ etc / magic,/ usr / share / misc / magic.mgc,/ usr / share / misc / magic中。 您可以通過將文件放置在您的主文件夾中,名為$ HOME / .magic.mgc或$ HOME / .magic來覆蓋這些文件。
最後的測試是語言測試。 該文件被檢查以查看它是否是文本文件。 通過測試文件的前幾個字節,您可以推斷出它是ASCII,UTF-8,UTF-16還是另一種將文件確定為文本文件的格式。 一旦推導出字符集,文件就會針對不同的語言進行測試。 例如文件ac程序。
如果沒有任何測試工作,輸出只是數據。
如何使用文件命令
文件命令可以如下使用:
文件文件名
例如,假設您有一個名為file1的文件,您可以運行以下命令:
文件file1
輸出結果如下所示:
file1:PNG圖像數據,640 x 341,8位/彩色RGB,非隔行掃描
顯示的輸出將file1確定為圖像文件或更確切地說是便攜式網絡圖形(PNG)文件。
不同的文件類型產生不同的結果如下:
- ISO文件類型 - DOS / MBR引導扇區ISO 9660 CD-Rom文件系統數據“標籤”(可啟動); 分區2:ID = 0xef,開始CHS(0x3ff,254,63),結束CHS(0x3ff,4,63)startsector 1496,4736扇區
- ODS文件類型 - OpenDocument電子表格
- PDF文件類型 - PDF文檔,版本1.4
- CSV文件類型 - 帶有非常長的行的ASCII文本,帶有CRLF行指示符
自定義來自文件命令的輸出
默認情況下,file命令提供文件名,然後提供文件上方的所有詳細信息。 如果您只是想重複使用沒有文件名的詳細信息,請使用以下開關:
文件-b文件1
輸出結果如下所示:
PNG圖像數據,640 x 341,8位/彩色RGB,非隔行掃描
您也可以更改文件名和類型之間的分隔符。
默認情況下,分隔符是冒號(:),但您可以將其更改為任何您喜歡的內容,例如管道符號,如下所示:
文件-F'|' 文件1
輸出現在是這樣的:
文件1 | PNG圖像數據,640 x 341,8位/彩色RGB,非隔行掃描
處理多個文件
默認情況下,您將針對單個文件使用file命令。 但是,您可以指定一個文件名,其中包含要由文件命令處理的文件列表:
作為一個例子,使用nano編輯器打開一個名為testfiles的文件,並將這些行添加到它:
- / etc / passwd文件
- /etc/pam.conf中
- 在/ etc /選擇
保存該文件並運行以下文件命令:
文件-f測試文件
輸出結果如下所示:
/ etc / passwd:ASCII文本
/etc/pam.conf:ASCII文本
/ etc / opt:目錄
壓縮文件
默認情況下,當你對一個壓縮文件運行file命令時,你會看到如下輸出:
file.zip:ZIP歸檔數據,至少要提取V2.0
雖然這告訴你該文件是一個檔案文件,但你並不真正了解該文件的內容。 您可以查看zip文件以查看壓縮文件中文件的文件類型。
以下命令針對ZIP文件內的文件運行file命令:
文件-z文件名
輸出現在將顯示歸檔文件中的文件類型。
概要
通常,大多數人只需使用file命令來查找基本文件類型,但要了解有關file命令提供的所有可能性的更多信息,請在終端窗口中鍵入以下內容:
男人文件