我想比较两个目录。我尝试了 diff 但它包含文件内的更改。我想要的只是这样的
file a is just in /A
file b is missing in /A
file c changed
directory d is missing in /A
directory e is just in /A
我认为这在进行完整文件修补时很常见,但我不知道一个好的解决方案。
我想比较两个目录。我尝试了 diff 但它包含文件内的更改。我想要的只是这样的
file a is just in /A
file b is missing in /A
file c changed
directory d is missing in /A
directory e is just in /A
我认为这在进行完整文件修补时很常见,但我不知道一个好的解决方案。
您正在寻找
概念证明:
结果是 :
您只需要包含-q标志以使其简短:
要查找重复项,您可以使用:
虽然其他人给了你很多很好的建议,但你也应该尝试一下。
如果你使用
它会提示您保留哪个文件(其他文件将被删除)。对删除重复非常有用(我确实在我的照片中很好地利用了它)
注意:是的,我知道问题不完全是关于这个,但也许它可以帮助他或其他人;)
如果您想根据例如大小比较文件,您可以执行以下操作:
然后:
找出哪些文件不同或丢失。当我必须比较两个具有非常大文件的目录以查看哪些文件没有完全下载时,我使用了它。
您可以尝试以下差异
ls
:不是一个命令,但它应该可以工作。
经典答案是“dircmp”命令。它有它的缺点(例如,通过 'pr' 管道输出以对其进行分页),但如果只会在目录一或目录二中为您提供对象列表,然后对于公共文件,它会报告“相同”或“不同”(以及非文件的文件类型 - 目录等)。
'diff -rq' 看起来与 'dircmp' 的输出相当或更好。
我在 Stack Overflow 上问了一个类似的问题,我得到的答案可能会让你感兴趣。在比较两个目录时,我对查找丢失的文件特别感兴趣。
我还指定解决方案应该处理重命名的文件(例如,如果目录 1 中的文件 A 也存在于目录 2 中但已被重命名,则脚本应该知道这一点)。
我选择的答案(它在顶部)非常有用。作为脚本的起点,它可能值得一看。