我试图以递归方式检查shell中2个独立目录中文件之间的区别。注意: - 两个目录只相同,只是根名称不同
在上面的图表中我想要"差异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
但是,这不起作用。有人可以帮我解决这个问题。感谢
答案 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
,因为它无关紧要如何不同的文件,只有它们相同或不同。