通过 shell 脚本使用文件命令验证 ASCII 文件

通过 shell 脚本使用文件命令验证 ASCII 文件

使用文件命令我需要验证许多文件是否是 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

由于您正在使用代码解析输出,因此我建议使用选项-ionfile以便输出哑剧类型而不是人性化的字符串。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/

相关内容