在 Linux/Solaris 中识别文本/ASCII 文件

在 Linux/Solaris 中识别文本/ASCII 文件

我有一个小项目来构建一个 bash 脚本,该脚本在操作系统(Linux/Solaris)中搜索文件中的当前 IP 地址,并将其替换为另一个 IP 地址。

问题是 IP 地址可能位于文本文件中,也可能位于非文本文件中,例如二进制/数据文件中。

我使用以下命令:

 file --mime $PATH (--mime is valid only for linux)

为了验证文件是否是文本文件,或者不是文本文件(二进制或数据文件等)

那是对的吗?

例如如果我有以下命令:

file --mime $PATH (returns the results "text/plain")

那么它是一个文本/ASCII 文件,如果不是那么它就不是文本文件?

第二个问题:

file --mime "--mime"     

该标志仅对 Linux 有效,但在 Solaris 中无效,那么 Solaris 的替代方案是什么?

文件命令有时不能准确地识别目标文件的定义,所以如果有人对如何识别文本文件有其他想法......?

答案1

不,这样无法正常工作。请尝试在 HTML 文件上运行它。

如果我没记错的话,查找空字节是很常见的(但它对 UTF-8 文件不起作用)。对于纯 ASCII 文件,这将完成此操作:

$ hexdump -v -e '/1 "%02X "' <"$file" | fgrep -q 00

相关内容