计算一个目录的md5值
使用Linux的md5sum命令可以计算出一个文件的md5值,这可以用于判断文件是否经过更改,使用方法如下:
md5sum filename
但md5sum命令无法作用于一个目录,那如何计算一个目录的md5呢?有一个思路是计算目录内所有文件的md5,然后再进行一次的md5计算。我们可以遍历目录,对所有文件进行计算:
sum=''
process() {
local dir=$1
for file in `ls $dir` ; do
local path=$dir/$file
if [ -d $path ] ; then
process $path
elif [ -f $path ] ; then
sum=$sum$(md5sum $path)
fi
done
}
process pathname
echo $sum | md5sum
其实利用Linux的find命令,能够更方便快捷地达成目的
find pathname -type f | xargs md5sum | md5sum
当然,用这两种方法计算的md5是不一样的,要保证使用同一个md5算法,以免出问题。