Files

有沒有方便的方法將文件分類為“二進制”或“文本”?

  • October 16, 2021

標準 Unix 實用程序喜歡grepdiff使用一些啟發式方法將文件分類為“文本”或“二進制”。(例如grep的輸出可能包括類似的行Binary file frobozz matches。)

是否可以在腳本中應用一種方便的測試zsh來執行類似的“文本/二進制”分類?(除了類似的東西grep '' somefile | grep -q Binary。)

(我意識到任何這樣的測試都必然是啟發式的,因此是不完美的。)

如果您file只要求mime 類型,您會得到許多不同的類型,例如text/x-shellscript,application/x-executable等等,但我想如果您只檢查“文本”部分,您應該會得到很好的結果。例如(-b對於輸出中沒有文件名):

file -b --mime-type filename | sed 's|/.*||'

另一種方法是使用isutf8moreutils集合

如果文件是有效的 UTF-8 或 ASCII 或短路,則以 0 退出,列印錯誤消息(用 靜音-q),否則以 1 退出。

引用自:https://unix.stackexchange.com/questions/275516