如果我想找到两个目录树之间的差异,我通常只执行:
diff -r dir1/ dir2/
这将准确地输出对应文件之间的差异。我感兴趣的只是获得内容不同的相应文件的列表。我以为这只是向diff传递一个命令行选项的问题,但我在手册页上找不到任何东西。
有什么建议吗?
如果我想找到两个目录树之间的差异,我通常只执行:
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
Diffoscope是一个伟大的基于命令行的目录差异工具。
我特别喜欢它,它可以区分为文件:
它将递归地解包多种类型的档案,并将各种二进制格式转换为更易于人类阅读的形式,以便进行比较。它可以很容易地比较两个tarball、ISO映像或PDF。
它不仅会告诉你哪些文件不同,还会告诉你它们是如何不同的。
你也可以使用Rsync和find。找到:
find $FOLDER -type f | cut -d/ -f2- | sort > /tmp/file_list_$FOLDER
但是具有相同名称和相同子文件夹中,但内容不同的文件将不会显示在列表中。
如果你是GUI的粉丝,你可以查看@Alexander提到的Meld。它在windows和linux中都工作得很好。
我喜欢使用git diff——no-index dir1/ dir2/,因为它可以显示颜色的差异(如果你在git配置中设置了该选项),因为它可以使用“less”显示长页面输出中的所有差异。
要查找diff,使用以下命令:
diff -qr dir1/ dir2/
-r也将diff所有子目录-q告诉diff仅当文件不同时才报告。
diff --brief dir1/ dir2/
——brief将显示目录中不存在的文件。
否则
我们可以使用Meld,它将显示在图形窗口中,很容易发现差异。
meld dir1/ dir2/