Diffoscope 是一个很棒的基于命令行的目录差异工具。
我特别喜欢它可以差异化 成 文件:
它将以递归方式解压缩多种档案,并将各种二进制格式转换为更易读的形式,以便对它们进行比较。它可以轻松地比较两个tarball,ISO图像或PDF。
它不仅会告诉您哪些文件不同,还会告诉您它们的区别。
您可以 也 使用 Rsync 和 find 。对于 find :
Rsync
find
find $FOLDER -type f | cut -d/ -f2- | sort > /tmp/file_list_$FOLDER
但是,具有相同名称和相同子文件夹但具有不同内容的文件将不会显示在列表中。
如果您是GUI的粉丝,您可以查看 合并 那 @Alexander 提及。它在windows和linux中都能正常工作。
的 合并 强> 也是比较两个目录的好工具:
meld dir1/ dir2/
Meld有许多用于比较文件或目录的选项。如果两个文件不同,则很容易进入文件比较模式并查看确切的差异。
我使用的命令是:
diff -qr dir1/ dir2/
它与马克的完全相同:)但他的回答让我感到困扰,因为它使用的不同 类型 旗帜,它让我看了两次。使用Mark的更详细的标志,它将是:
diff --brief --recursive dir1/ dir2/
<子> 当其他答案完全可以接受时,我为发布而道歉。无法阻止自己...努力减少迂腐。 子>
我喜欢用 git diff --no-index dir1/ dir2/ ,因为它可以显示颜色的差异(如果您在git配置中设置了该选项),并且因为它显示了使用“less”的长分页输出中的所有差异。
git diff --no-index dir1/ dir2/
你说Linux,所以你运气好了(至少它应该可用,不确定何时添加):
diff --brief --recursive dir1/ dir2/ # GNU long options diff -qr dir1/ dir2/ # common short options
应该做你需要的。
如果您还想查看任一目录中可能不存在的文件的差异:
diff --brief --recursive --new-file dir1/ dir2/ # GNU long options diff -qrN dir1/ dir2/ # common short options
这两个命令基本上要求的是:
diff --brief --recursive --no-dereference --new-file --no-ignore-file-name-case /dir1 /dir2 > dirdiff_1.txt rsync --recursive --delete --links --checksum --verbose --dry-run /dir1/ /dir2/ > dirdiff_2.txt
它们之间的选择取决于dir1和dir2的位置:
当目录驻留在两个单独的驱动器上时,diff优于rsync。但是当比较的两个目录在同一个驱动器上时,rsync会更快。这是因为diff在两个目录上并行放置几乎相等的负载,从而最大化两个驱动器的负载。
rsync在实际比较它们之前计算大块中的校验和。它将i / o操作分组为大块,并在单个驱动器上进行更有效的处理。
要查找diff,请使用以下命令:
的 -r 强> 将分散所有子目录 的 -q 强> 告诉diff仅在文件不同时报告。
diff --brief dir1/ dir2/
的 - 简要 强> 将显示目录中存在的文件。
的 要不然 强>
我们可以使用Meld,它将在图形窗口中显示,很容易找到差异。