Compare two different directories for same file
是否有任何工具可以比较相同命名文件的 2 个目录(具有不同的子目录)?
例如。 DirA 有子目录 DirA1,DirA1 有一个名为 file.cpp 的文件。
DirB 有 file.cpp.
Dira->DirA1->file.cpp 和 DirB->file.cpp。
所以,如果我将这 2 个目录与 BC 进行比较,BC 不会比较这 2 个文件。它会将它们标记为双方的孤儿。
我们可以编写任何 BC 脚本来比较这两个文件吗?
PS:我可以在两个文件夹中有 10-100 个文件进行比较。关键是如何让比较工具寻找匹配的文件名,而不考虑目录级别。
我希望我的问题在这里有意义。
Beyond Compare 3 在视图菜单中有一个选项(忽略文件夹结构),它完全符合您的要求。它遍历每个文件的所有子文件夹,并在单个级别中显示它们,文件根据名称对齐。如果碰巧有多个同名文件,它将优先对齐具有相同目录结构的文件。
-
谢谢克雷格...我有 BC2,刚刚安装 BC3 并检查。它按要求工作。 Winmerge 或任何其他开源软件包是否支持此功能?
-
@Bolt BC3 是我所知道的唯一支持它的人,但我已经有一段时间没有认真评估我们的竞争对手了。我只是浏览了 Windows 上可用的开源软件,但它们都没有。
-
BC 可让您从内存 scootersoftware.com/download.php 下载持续 30 天的全功能试用版
没有编写脚本,这是实现这一目标的快速而肮脏的方法:
创建两个临时目录 - FlatA 和 FlatB。
将原始目录 DirA 和 DirB 压缩成单独的 zip 文件 - ArchiveA.zip 和 ArchiveB.zip
将两个存档分别解压缩到 FlatA 和 FlatB 中,不带路径。
使用 BeyondCompare 比较 "flattened" 文件夹 FlatA 和 FlatB
- 如果不同子文件夹中有同名文件怎么办?
-
@NeonGlow他特别想比较两个目录中具有相同名称的文件的内容,而不管它们的嵌套级别如何,因此听起来一侧的相同名称不是该任务的关注点-这就是这个问题的全部意义所在。在我建议的解决方案中,任何提取工具(例如 WinZip)都会提示是否覆盖、跳过或可能重命名具有相同名称的文件(当删除相关路径时)。
-
我不明白归档 wud 有什么帮助。我想我的问题不清楚。我想要一些可以比较特定文件的工具,而不管它的父目录名称是 .Dira->DirA1->file.cpp 和 DirB->file.cpp。因此,如果我比较 DirA 和 DirB , file.cpp 不应作为 Dir B 中的孤儿出现,该工具应尝试将(DirB 的) file.cpp 与 DirA/DirA1 的 file.cpp 进行比较。是否可以 ?
-
我明白你的问题。归档将有助于这是在 Windows 上展平目录的最简单方法(当您解压缩时) - 即将子目录中的所有文件转储到单个目录中。那时,你有两个只有文件的目录——没有子目录,你可以在上面运行 BC。
-
是的..正如你所说的那样,它可能会起作用,我正在寻找一些可以在更短的时间内重复使用的解决方案。每次,当我更新我的源代码(cud 大约 800MBs)时,我无法进行压缩和解压缩。压平 dir wud 肯定有效。但是还有其他方法吗?
-
如果归档不是一个选项,我会编写一些脚本(Perl、批处理、Bash 等),它会在两个层次结构之间找到匹配的文件,并通过 diff 运行每个匹配对。然后,它可以仅将具有差异的文件对转储到两个临时目录中,以供 BC 手动比较。