我有两个大的目录树 – 想想一个机构的客户工作多年。 一个老了,过时了; 另一个是更大,目前使用。 我想删除前者,但是我想确定后者是真正的超集(我怀疑前者是旧的存档或后者的早期版本,被粗心地复制并且从不删除)。
在其通常的configuration中使用diff会产生太多的输出,因为它会告诉我两个目录树之间的所有差异。 我想知道的是,我可以运行什么命令来查找较小的较旧的树上的哪些文件(如果有的话),这些文件在更大的较新的树上也不可用。
顺便说一句,我在Windows上运行cygwin – 不知道这是否重要。 如果有人会build议使用Windows实用程序,也没关系。
超越比较是字面上的,这种types的任务无法比拟。 它使比较目录微不足道。 它会显示你在视图中的文件,然后你可以select它们并将它们复制到其他地方,或者复制到新的树中。
如果你的数据集是你所怀疑的,那么它只会在旧的一面显示一个空的视图,而你知道你没有什么需要做的。
Robocopy是你想要的一个Windows实用程序。
robocopy.exe <your old dir tree> <your new dir tree> /COPYALL /L
您可以添加其他选项,但要确保/ L在那里,否则它将实际合并两棵树,而不是仅仅比较差异。
olddir$ for file in $(find -type f); do [ -e $NEWDIR/$file ] || echo "$file is missing in NEWDIR"; done