使用文件命令我需要验证许多文件是否是 ASCII 或其他格式
有时我会从文件命令中获取:
file1: ASCII English text
有时我会从文件命令得到不同的答案
file2: Non-ISO extended-ASCII English text, with very long lines
我真的不确定是否还有其他具有不同语法的答案
我的问题是:
我编写了以下 ksh 语法来验证文件是否为 ASCII,但我不确定
以下语法是否是验证 ASCII 格式的最佳语法?
[[ ` file $some_file | grep –c ASCII ` = 1 ]] && print "you have ascii file for sure"
如果有人有其他建议来验证 ASCII 格式!我会很高兴看到
答案1
if LC_ALL=C grep -q '[^[:print:][:space:]]' file; then
echo "file contains non-ascii characters"
else
echo "file contains ascii characters only"
fi
答案2
怎么样...
if file -ib "$file" | grep -Eqs '^text/plain(;|$)'; then
echo "It's text/plain."
fi
我不知道它有多常见--mime-type
;如果它是标准的,请使用
if file -b --mime-type "$file" | grep -qs '^text/plain$'; then
或者grep -qs '^text/'
适用于任何文本类型。
答案3
由于您正在使用代码解析输出,因此我建议使用选项-i
onfile
以便输出哑剧类型而不是人性化的字符串。MIME 类型输出更加规则,这使得在代码中处理起来更加容易一些。
至于输出类型,请查看man 文件说:
/usr/share/file/magic
Default list of magic numbers
/usr/share/file/magic.mime
Default list of magic numbers, used to output mime types
when the -i option is specified.
查看这些文件以了解它可以报告的所有 MIME 类型,以确定在解析输出时您会关心哪些类型file
。我怀疑您关心的只是 MIME 类型以 开头text/
。