如何判断一个文件是二进制文件?
例如,编译后的 C 文件。
我想从某个目录读取所有文件,但我想忽略二进制文件。
如何判断一个文件是二进制文件?
例如,编译后的 C 文件。
我想从某个目录读取所有文件,但我想忽略二进制文件。
grep
假设二进制意味着文件包含非可打印字符(不包括空白字符,如空格、制表符或换行符),这可能有效(适用于BSD和GNU):
$ grep '[^[:print:][:blank:]]' file && echo Binary || echo Text
注意:GNU grep
会将只包含 NULL 字符的文件报告为文本,但在 BSD 版本 上可以正常工作。
更多示例,请参见:如何 grep 所有非 ASCII 字符。
if ! file /path/to/file | grep -iq ASCII ; then
echo "Binary"
fi
if file /path/to/file | grep -iq ASCII ; then
echo "Text file"
fi