生成一对文件的差异报告

时间:2013-05-06 07:18:54

标签: shell command

我在两个目录dir1dir2中有数千个平面文件。现在,我想在另外两个不同的目录success(如果diff完全相同)和failure(如果diff不相同)中生成一对相同文件名的差异报告。

例如: 如果dir1有文件:file1, file2 如果dir2有文件:file2, file3

然后我只考虑dir1/file2dir2/file2的差异。 file1file3将被忽略,因为它们没有各自的对。

如何使用shell脚本执行此操作?是否可以使用系统命令?

1 个答案:

答案 0 :(得分:1)

您没有在“成功”中指定要查看的报告类型 和“失败”目录,所以不包括在解决方案中。另外,使用 “cmp”代替“diff”,因为你没有完全指定你需要“diff” 输出和什么样的。

for p1 in dir1/*; do
    f=`basename "$p1"`
    p2="dir2/$f"
    if [ -e "$p2" ]; then
        if cmp --quiet "$p1" "$p2"; then
            echo "$f: success"
        else
            echo "$f: failure"
        fi
    fi
done

用您的报告生成替换“echo”。将“cmp”替换为“diff”和 适当的选择,如有必要。