如何对比两个目录的子目录列表,快速定位差异子目录?
快速找出目录A中存在但目录B缺失的子目录
命令行方案(最快实现)
Windows(PowerShell)
替换路径为你的实际路径后执行:
cd "你的A和B所在的父目录路径" Compare-Object -ReferenceObject (Get-ChildItem -Path .\A -Directory | Select-Object -ExpandProperty Name) -DifferenceObject (Get-ChildItem -Path .\B -Directory | Select-Object -ExpandProperty Name) | Where-Object SideIndicator -eq '<=' | Select-Object -ExpandProperty InputObject
执行后会直接输出A独有的子目录名称(即2、4)。
Linux/macOS(Bash)
切换到A和B的父目录,执行:
cd /你的父目录路径 comm -23 <(ls -d A/*/ | sed 's/A\///;s/\///') <(ls -d B/*/ | sed 's/B\///;s/\///')
comm -23会筛选出仅在A中存在的目录名,sed用来清理路径前缀和末尾斜杠,只保留纯目录名。
GUI工具方案
如果偏好可视化操作,可以用Total Commander的同步功能:
- 打开Total Commander,分别在左右面板打开目录A和目录B
- 点击菜单栏的
Commands->Synchronize Dirs - 在弹出窗口中勾选
Compare directories only,取消其他文件相关对比选项 - 点击
Compare后,A中独有的子目录会被高亮标记。
注:你提到的Mark的Compare Directories仅支持文件对比,上述方案可以完美替代实现目录名称的对比需求。
内容的提问来源于stack exchange,提问作者András
相关产品推荐
相关产品推荐

