我有一个小项目来构建一个 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