在用find命令列出文件时,openssl sha256sum的哈希会把输出文件作为输入的一部分包含进来
在下面的shell脚本函数中,我使用 find 与 sha256sum 命令的组合来计算 SHA-256 哈希值。
但是,当我对生成的哈希文件 hashedoutput.sha256 进行 cat 时,它把生成的输出哈希文件 hashedoutput.sha256 也作为输入文件列表的一部分包含在内,这是我不想要的。
下面是这个shell脚本函数
gen_sha256sum () {
find "$1" -maxdepth 1 -type f -exec sha256sum {} + > "$1/hashedoutput.sha256"
}
$1 是一个输入参数,表示一个包含用于生成 SHA_256 输出文件 hashedoutput.sha256 的文件的目录。
解决方案
重定向是在shell调用 find 命令之前就被处理的。因此,该文件在开始搜索之前就已创建,一旦 find 运行,它已经存在并且可以被找到。你可以
- 从
find中跳过该文件 (\! -name hashedoutput.sha256), - 从输出中过滤掉它 (
+ | grep -v '/hashedoutput\.sha256$' > "$1/..."), - 在其他地方创建输出,然后稍后再将其移动到目标位置。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。