You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用sha256sum -c处理带全路径的校验文件时报错的解决方法

解决sha256sum -c校验带路径的.sha256文件报错问题

首先纠正你的误解:sha256sum -c完全支持带完整路径的.sha256文件,报错的核心原因不是路径本身,而是以下两种情况之一:

  • .sha256文件内部的校验行仅写了目标文件的相对文件名(比如x3),但你在当前目录执行校验时找不到该文件;
  • 对应的目标文件(比如/path/a/9b/x3)本身不存在或权限不足。

验证问题根源

先手动执行单个校验命令定位具体错误:

sha256sum -c /path/a/9b/x3.sha256

如果输出提示x3: No such file or directory,那就是.sha256文件内的文件名路径不匹配导致的。

两种修复方案

方案一:批量修正.sha256文件内的路径

通过脚本自动给.sha256文件里的目标文件名补上绝对路径,再执行校验:

while read sha_file; do
    # 跳过空行
    [ -z "$sha_file" ] && continue
    # 获取.sha256文件的所在目录
    sha_dir=$(dirname "$sha_file")
    # 获取对应的目标文件名(去掉.sha256后缀)
    target_name=$(basename "$sha_file" .sha256)
    # 替换.sha256文件内的相对文件名为绝对路径
    sed -i "s/^\([0-9a-fA-F]*\)[[:space:]]\+.*/\1  $sha_dir\/$target_name/" "$sha_file"
    # 执行校验并追加到输出文件
    sha256sum -c "$sha_file" >> output_file.txt
done < file.txt

方案二:切换到.sha256文件所在目录执行校验

如果不想修改.sha256文件,可以先进入目标目录,用相对路径执行校验(注意输出文件要写绝对路径,避免切换目录后路径错误):

# 先定义输出文件的绝对路径,避免切换目录后路径混乱
OUTPUT="/绝对路径/output_file.txt"
while read sha_file; do
    [ -z "$sha_file" ] && continue
    # 切换到.sha256文件所在目录,失败则跳过
    cd "$(dirname "$sha_file")" || continue
    # 用相对路径执行校验
    sha256sum -c "$(basename "$sha_file")" >> "$OUTPUT"
    # 切回原目录(静默输出)
    cd - > /dev/null
done < file.txt

额外注意事项

  • 如果是目标文件不存在或权限问题,需要先确保/path/a/9b/x3这类文件存在,且当前用户有读取权限;
  • 脚本里加入了跳过空行的逻辑,避免处理file.txt里的空行导致错误。

内容的提问来源于stack exchange,提问作者Lucas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 20:50:35