我有多个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文件同名。
提前致谢。
答案 0 :(得分:2)
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 "$1"; then