如果我想找到两个目录树之间的差异,我通常只执行:

diff -r dir1/ dir2/

这将准确地输出对应文件之间的差异。我感兴趣的只是获得内容不同的相应文件的列表。我以为这只是向diff传递一个命令行选项的问题,但我在手册页上找不到任何东西。

有什么建议吗?


当前回答

Diffoscope是一个伟大的基于命令行的目录差异工具。

我特别喜欢它,它可以区分为文件:

它将递归地解包多种类型的档案,并将各种二进制格式转换为更易于人类阅读的形式,以便进行比较。它可以很容易地比较两个tarball、ISO映像或PDF。

它不仅会告诉你哪些文件不同,还会告诉你它们是如何不同的。

其他回答

Try:

diff --brief --recursive dir1/ dir2/

或者,用短标记-qr:

diff -qr dir1/ dir2/

如果您还想查看两个目录中可能不存在的文件的差异:

diff --brief --recursive --new-file dir1/ dir2/  # with long options
diff -qrN dir1/ dir2/                            # with short flag aliases

我使用的命令是:

diff -qr dir1/ dir2/

这和马克的完全一样:)但他的回答让我很困扰,因为它使用了不同类型的旗帜,让我看了两遍。使用Mark更冗长的标志,它将是:

diff  --brief --recursive dir1/ dir2/

我很抱歉在其他答案完全可以接受的情况下发布了这篇文章。无法阻止自己……努力变得不那么迂腐。

Meld也是一个比较两个目录的好工具:

meld dir1/ dir2/

Meld有许多比较文件或目录的选项。如果两个文件不同,很容易进入文件比较模式并查看确切的差异。

要查找diff,使用以下命令:

diff -qr dir1/ dir2/

-r也将diff所有子目录-q告诉diff仅当文件不同时才报告。

diff  --brief dir1/ dir2/

——brief将显示目录中不存在的文件。

否则

我们可以使用Meld,它将显示在图形窗口中,很容易发现差异。

meld  dir1/ dir2/

Diffoscope是一个伟大的基于命令行的目录差异工具。

我特别喜欢它,它可以区分为文件:

它将递归地解包多种类型的档案,并将各种二进制格式转换为更易于人类阅读的形式,以便进行比较。它可以很容易地比较两个tarball、ISO映像或PDF。

它不仅会告诉你哪些文件不同,还会告诉你它们是如何不同的。