在脚本查看每个文件之前,每个文件都创建了md5校验和,因此这些.md5文件已经存在(它们是在文件压缩后生成的)。我正在检查,以确保没有人更改任何文件,从它们创建的时间,到我查看它的时候。
我要做的是循环这个列表,找到所有的.md5校验和,并将它们与实际文件的md5校验和进行比较。
这就是我的目录看起来..。
-rwxr-xr-x 1 awiles awiles 209904416 Nov 29 17:53 590465-1_v1.200.tar.gz*
-rwxr-xr-x 1 awiles awiles 57 Nov 29 17:53 590465-1_v1.200.tar.gz.md5*
-rwxr-xr-x 1 awiles awiles 1341076 Nov 29 17:53 590466-1_v1.320.tar.gz*
-rwxr-xr-x 1 awiles awiles 57 Nov 29 17:53 590466-1_v1.320.tar.gz.md5*
-rwxr-xr-x 1 awiles awiles 214723375 Nov 29 18:03 590467-1_v2.700.tar.gz*
-rwxr-xr-x 1 awiles awiles 57 Nov 29 18:03 590467-1_v2.700.tar.gz.md5*
-r-xr-xr-x 1 awiles awiles 2482573113 Nov 29 18:02 590468-1_v1.020.tar.gz*
-rwxr-xr-x 1 awiles awiles 46 Nov 29 18:02 590468-1_v1.020.tar.gz.md5*
-rwxr-xr-x 1 awiles awiles 28043339 Nov 29 17:53 590505-1_v1.040.tar.gz*
-rwxr-xr-x 1 awiles awiles 57 Nov 29 17:53 590505-1_v1.040.tar.gz.md5*我现在的bash密码..。
for f in $DIR/*
do
if [[ $f == *".md5" ]] ; then
md5sum -c $f
fi
done我有以下错误..。
md5sum: 590465-1_v1.200.tar.gz: No such file or directory
590465-1_v1.200.tar.gz: FAILED open or read
md5sum: WARNING: 1 listed file could not be read我在这里做错了什么?
发布于 2016-11-30 06:22:05
从md5sum的输出判断,它希望590465-1_v1.200.tar.gz位于当前目录中。只有当DIR是.时,您的脚本才能工作。如果不是这样的话,那么您应该首先从cd到$DIR,例如:
(
cd "$DIR" && for f in *
do
if [[ $f == *".md5" ]] ; then
md5sum -c $f
fi
done
)我将它包装在(...)中,这样您就不必在完成时记住cd "$OLDPWD"。(在脚本中使用cd经常会由于疏忽而导致奇怪的错误。)
发布于 2016-11-30 06:24:44
简单的方法:
ls -1 *.md5 |while read line; do cat $line ; done|md5sum -c
一些类似的方式:
md5sum * > checklist.chk #为任何匹配的文件生成校验和列表*
md5sum -c checklist.chk #遍历列表以检查它们
https://stackoverflow.com/questions/40881516
复制相似问题