使用 bash 进行动态 zip 文件校验和检查

Dynamic zip file checksum checking using bash

我有多个 zip 文件,如果它们在传输时没有受到损害,我想检查它们,如果校验和值匹配,那么我需要解压缩文件夹。

我可以对一个 zip 文件执行此操作,但我需要动态检查,因此我不必每次都替换 zip 文件名来 运行 检查。

这是我到目前为止所拥有的:

if [[ $(sha512sum file.zip | cut -d " " -f 1) -ne $(cat file.sha512) ]]; then
        log "error" "Checksum values do not match"
        exit -1;
    else
        log "info" "Checksum values match"
        unzip file.zip

所以我还有其他名为 file1、file2 的 zip 文件,.sha512 名称也往往与其对应的 zip 文件同名。

提前致谢。

for for file in *.sha512
do 
    if sha512sum -c --status "$file.sha512"; then
        log "info" "Checksum values match"
        zipfile="${file/\.sha512/\.zip}"
        # zipfile="$(basename "$file" .sha512).zip"
        unzip "$zipfile"
    else
        log "error" "Checksum values do not match"
        exit 1
    fi
done

应该可以。如果在检查和解压缩后将 .zip 和 .sha512 文件移走,这应该就足够了。否则,您可以使用 find 搜索上周的文件:

find -maxdepth 1 -type f -name "*.sha512" -mtime -6 -exec ./ifscript.sh {} ";" 

ifscript.sh 将是上面的 if-else-fi 块,但使用参数而不是文件名:

if sha512sum -c --status ""; then