Shell:批量比较多个文件的内容是否相同

  • 2015-12-10
  • 114
  • 1
  • 0

通常,比较两个文件是否相同,可以用diff命令,例如:

diff file1 file2

但是,diff命令只能比较两个文件,若是更多的呢?这时可以使用md5sum来实现,相比diff的逐行比较,md5sum的速度快很多。

但md5sum只能通过查看md5值来间接比较文件是否相同,要实现批量自动比较,就需要通过循环和判断来实现,具体如下:

#!/bin/bash
# 设定分隔符,使得一行赋值一次变量
IFS=$'\n'
declare -A md5_array

# 计算每个文件的md5值
for line in `md5sum "$@"`
do
# MD5部分作为数组的index
    index=${line%% *}
# file作为数组变量值的一部分
    file=${line##* }
    md5_array[$index]="$file ${md5_array[$index]}"
done

for i in ${!md5_array[@]}
do
    echo -e "the same file with md5: $i\n--------------\n`echo ${md5_array[$i]}|tr ' ' '\n'`\n"
done 

评论