Files
有沒有方便的方法將文件分類為“二進制”或“文本”?
標準 Unix 實用程序喜歡
grep
並diff
使用一些啟發式方法將文件分類為“文本”或“二進制”。(例如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|/.*||'
另一種方法是使用
isutf8
moreutils集合。如果文件是有效的 UTF-8 或 ASCII 或短路,則以 0 退出,列印錯誤消息(用 靜音
-q
),否則以 1 退出。