如何使用Linux確定文件的文件類型

大多數人看著文件的擴展名,然後猜測該擴展名的文件類型。 例如,當你看到一個擴展名為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)文件。

不同的文件類型產生不同的結果如下:

自定義來自文件命令的輸出

默認情況下,file命令提供文件名,然後提供文件上方的所有詳細信息。 如果您只是想重複使用沒有文件名的詳細信息,請使用以下開關:

文件-b文件1

輸出結果如下所示:

PNG圖像數據,640 x 341,8位/彩色RGB,非隔行掃描

您也可以更改文件名和類型之間的分隔符。

默認情況下,分隔符是冒號(:),但您可以將其更改為任何您喜歡的內容,例如管道符號,如下所示:

文件-F'|' 文件1

輸出現在是這樣的:

文件1 | PNG圖像數據,640 x 341,8位/彩色RGB,非隔行掃描

處理多個文件

默認情況下,您將針對單個文件使用file命令。 但是,您可以指定一個文件名,其中包含要由文件命令處理的文件列表:

作為一個例子,使用nano編輯器打開一個名為testfiles的文件,並將這些行添加到它:

保存該文件並運行以下文件命令:

文件-f測試文件

輸出結果如下所示:

/ etc / passwd:ASCII文本
/etc/pam.conf:ASCII文本
/ etc / opt:目錄

壓縮文件

默認情況下,當你對一個壓縮文件運行file命令時,你會看到如下輸出:

file.zip:ZIP歸檔數據,至少要提取V2.0

雖然這告訴你該文件是一個檔案文件,但你並不真正了解該文件的內容。 您可以查看zip文件以查看壓縮文件中文件的文件類型。

以下命令針對ZIP文件內的文件運行file命令:

文件-z文件名

輸出現在將顯示歸檔文件中的文件類型。

概要

通常,大多數人只需使用file命令來查找基本文件類型,但要了解有關file命令提供的所有可能性的更多信息,請在終端窗口中鍵入以下內容:

男人文件