递归检查shell中文件之间的差异

时间:2017-12-05 21:44:38

标签: linux bash shell

我试图以递归方式检查shell中2个独立目录中文件之间的区别。注意: - 两个目录只相同,只是根名称不同

enter image description here

在上面的图表中我想要"差异ROOT_A / A.md5 ROOT_B / A.md5"在我的脚本文件中递归显示根目录中的所有文件。

for filename in ROOT_A/*.md5; do
    diff ($filename | cut -d '/' -f 2) (ROOT_B/$filename) >> logfile.txt done

但是,这不起作用。有人可以帮我解决这个问题。感谢

1 个答案:

答案 0 :(得分:3)

假设你的shell是Bash:

ROOT_A='...'
ROOT_B='...'
for file in "$ROOT_A"/*.md5; do
  ! test -r "$file" || ! test -r "$ROOT_B/${file##*/}" && continue
  echo "Comparing $file with $ROOT_B/${file##*/}"
  diff "$file" "$ROOT_B/${file##*/}"
done

正如@CharlesDuffy所观察到的,如果文件是真正的MD5总和(或其他类似的校验和),diff应该替换为cmp,因为它无关紧要如何不同的文件,只有它们相同或不同。