如何在不打開文件的情況下驗證文件是二進制還是文本?linux +驗證文件是文本還是二進制
回答
如果不查看文件內容,就沒有辦法確定。 Hoewever,你不必用編輯器打開它,看看自己是否有線索。你可能想看看file
命令:http://linux.die.net/man/1/file
薛丁格的貓,恐怕。
如果不打開它,無法確定文件的內容。文件系統不存儲與內容相關的元數據。
如果不打開文件不是一個硬性要求,那麼有很多解決方案可供您使用。
編輯:
有人提出了一些意見和答案是file(1)
是確定內容的一個好辦法。它的確是。然而,file(1)
打開該文件,這是在問題中禁止。見倒數第二行下面的例子:
> echo 'This is not a pipe' > file.jpg && strace file file.jpg 2>&1 | grep file.jpg
execve("/usr/bin/file", ["file", "file.jpg"], [/* 56 vars */]) = 0
lstat64("file.jpg", {st_mode=S_IFREG|0644, st_size=19, ...}) = 0
stat64("file.jpg", {st_mode=S_IFREG|0644, st_size=19, ...}) = 0
open("file.jpg", O_RDONLY|O_LARGEFILE) = 3
write(1, "file.jpg: ASCII text\n", 21file.jpg: ASCII text
如果你正試圖從命令shell做到這一點,則file
命令將採取什麼對文件類型是一種猜測。如果是文本,那麼它通常會在其描述中包含文字。
我不知道有任何100%的方法來確定這一點,但文件命令可能是最準確的。
當然,這會打開文件,並不會100%確定。 – 2010-09-07 09:10:40
事實確實如此,儘管我不確定他是否反對自己打開文件或打開文件。我已經說過沒有100%確定的方法。 – 2010-09-07 09:12:16
在unix中,文件只是一些字節。所以,在不打開文件的情況下,你無法弄清100%是ASCII還是二進制。
您可以使用可用的工具並深入挖掘,以使其更加安全。
- 文件
- 貓-v
正確的方法來確定一個文件的類型是使用文件(1)命令。
您還需要知道UTF-8編碼文件是「文本」文件,但可能包含非ASCII數據。其他編碼也有這個問題。在使用code page編碼的文本的情況下,可能無法明確確定文件是否爲文本。
文件(1)命令將着眼於文件的結構,嘗試確定它所包含的內容 - 從文件(1)手冊頁:
打印的類型通常包含的 一個話文本(文件 只包含打印字符和 一些常見的控制字符,是 可能是安全的在ASCII 終端讀取),可執行(該文件包含 在 形式理解一些UNIX內核 或其他編譯程序的結果),或數據意味着什麼 其他(數據通常是「二進制」或不可打印)。
對於不同的字符編碼,文件(1)手冊頁有這樣一段話:
如果文件不匹配魔術文件的任何 條目,它是 檢查它是否看起來像是一個文本文件。 ASCII,ISO-8859-x,非ISO ISO 8位擴展ASCII字符集和 EBCDIC字符集可以通過構成每個集合中可打印文本的不同範圍 和 來區分。 如果文件 通過了任何這些測試,則會報告其字符集。 ASCII, ISO-8859-x,UTF-8和擴展ASCII文件被標識爲 '文本' ,因爲它們幾乎可以在任何終端上讀取; UTF-16和 EBCDIC只是'字符數據',因爲儘管它們包含文本,但 是 文本,在它可以被讀取之前需要進行翻譯。
所以,有些文本將被認定爲文本,但有些人可能會被認定爲字符數據。您需要確定自己是否對您的申請有影響並採取適當的行動。
- 1. 驗證STL文件是ASCII還是二進制
- 2. 確定文件是二進制文件還是文本文件
- 3. 如何確定文件是二進制還是文本?
- 4. 檢測文件是二進制還是純文本?
- 5. 在Linux中使用gcc確定文件是二進制可執行文件還是腳本文件
- 6. VB驗證文本框輸入是二進制數
- 7. 用Node.js檢查文件是二進制文件還是ASCII文件?
- 8. 自我驗證二進制文件?
- 9. 確定MIME類型是二進制文本還是基於文本的
- 10. Ruby:如何確定正在讀取的文件是二進制文本還是文本
- 11. 對於二進制文件,我應該使用bfiles還是bigfiles?
- 12. 如何檢查文件是否是二進制文件?
- 13. 在Windows上驗證64位二進制文件
- 14. 在node.js中,如何識別緩衝區是二進制還是文本?
- 15. 將二進制文件轉換爲linux中的文本
- 16. JMS協議是一個文本或二進制文件
- 17. 手機SDK的Linux二進制文件
- 18. 在Linux上旋轉二進制文件
- 19. Linux的shell:寫IP二進制文件
- 20. 其中是androidviewclient 4.6.0二進制文件?
- 21. 什麼是二進制文件?
- 22. 二進制文件的EOF是什麼?
- 23. Silverlight二進制文件.ni.dlls是什麼?
- 24. C - 讀取二進制文件,驗證校驗和
- 25. 從二進制文件創建十六進制文本文件
- 26. mod_rewrite如何驗證請求是文件還是目錄?
- 27. 在c中查看二進制文件時,我是按位還是按字節?
- 28. 我如何檢查編譯的二進制文件是32位還是64位?
- 29. 如何驗證死代碼是否從二進制文件中被刪除?
- 30. Ant - 驗證兩個二進制文件(jar)是否嚴格等於
很難判斷這是與編程有關還是應該遷移到SuperUser.com(是否是一個現有的實用工具?)。 – Johnsyweb 2010-09-07 08:57:08
文本至多是二進制的一個子集,如果不僅僅是一種解釋。考慮一個包含「0x65」的單字節文件。現在告訴我,如果這是二進制或文本。 – MSalters 2010-09-07 09:03:54
在驗證之前如何複製文件。複製 - >打開 - >驗證 - >刪除 – 2010-09-07 11:06:24