测试特定文件格式

测试特定文件格式

这是后续外观正常的文本文件,由文件检测为 ASCII Pascal 程序文本

看来file始终不能相信。

似乎某个特定文件可能被检测为同时具有encoding/format1encoding/format2file告诉我它是encoding/format1,但我需要检查它是否也满足 的约束encoding/format2

  • 有没有办法做到这一点?
  • 有没有办法我可以问“检查这个文件是否遵循 ASCII 英文文本的规则(或其他一些编码)”,答案是“是”还是“否”?

答案1

也许您可以使用的--keep-going( -k) 选项file。它写出更多匹配的格式。

有关的手册页该选项的说明:

不要在第一场比赛就停下来,继续前进。后续匹配将在前面添加字符串“\012-”。 (如果您想要换行符,请参阅 -r 选项。)强度最高的魔术模式(请参阅 -l 选项)排在第一位。

答案2

只回答你的第二个问题,如jofel已经回答了第一个

  • 有没有办法让我问“检查这个文件是否遵循 ASCII 英文文本(或其他编码)的​​规则”,答案是“是”或“否”?

请参阅-e/--exclude选项。从file(1):

-e, --排除 测试名称

排除指定的测试测试名称从为确定文件类型而进行的测试列表中。

[...]

  • soft Consults magic files

这些魔法文件负责 Pascal 报告,所以-e soft应该足够了。您也可以尝试从该列表中排除其他测试,只要您保持ascii启用状态即可。

对于“是/否”测试,请与-b(“简短”,即不带文件名)和结合使用--mime-encoding,以仅输出编码。然后是简单的字符串比较:

if [ "$(file -b --mime-encoding -e soft $file)" == "us-ascii" ] ; then
  echo yes
else
  echo no
fi

相关内容