vscode 不支持直接对比两个文件夹结构,因其设计仅限单文件内容 diff;推荐用 tree 生成结构快照再用 vscode 对比,或通过 find/comm(linux/macos)或 compare-object(windows)提取独有目录后人工比对。

VSCode 本身不支持直接对比两个文件夹结构
这不是功能缺失,而是设计限制:VSCode 的 Compare Files 和内置 diff 机制只处理单个文件内容,不识别目录树、文件元信息(如权限、修改时间)、软链接或空目录。你右键一个文件夹 → 没有 Compare 选项,不是操作遗漏,是根本不可用。
用 tree + diff 生成结构快照再比
最稳、跨平台、零依赖插件的方式:把两个项目根目录的结构“拍平”成文本,再用 VSCode 打开对比。
- 终端进项目 A 根目录,运行:
tree -F -I "node_modules|.git|.vscode|dist" > a-structure.txt(-I排除干扰项) - 进项目 B 根目录,同样运行:
tree -F -I "node_modules|.git|.vscode|dist" > b-structure.txt - 在 VSCode 中打开
a-structure.txt,按Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS),输入File: Compare Active File With,选中b-structure.txt
注意:tree 在 Windows 上需额外安装(如 Chocolatey 或 WSL),macOS/Linux 一般自带;-F 标记目录末尾加 /,能区分文件和文件夹。
GitLens 的 Compare Folders 功能仅限 Git 仓库内
GitLens 提供 Compare Folders 命令,但有硬性前提:两个路径必须属于同一 Git 工作区,且至少有一个是工作区根目录下的子路径。它不能对比两个独立克隆的仓库,也不能对比本地任意两个磁盘路径(比如 /home/user/project-a vs /tmp/project-b)。
触发方式:右键资源管理器中任一文件夹 → GitLens: Compare Folders → 选择另一个同工作区内的文件夹。结果以文件级差异列表呈现,不显示缺失/多余目录,只列“内容不同”的文件。
真正要查“哪些文件夹/文件只在一个项目里”,得靠 shell 脚本
结构差异的核心诉求常是:A 有但 B 没有的目录?B 新增了哪些配置文件?这时 tree 输出不够直观,需要集合运算:
- Linux/macOS:用
comm -3 查独有目录 - Windows(PowerShell):
Compare-Object (Get-ChildItem project-a -Recurse -Directory | ForEach-Object FullName) (Get-ChildItem project-b -Recurse -Directory | ForEach-Object FullName) - 输出结果复制粘贴到 VSCode 新建文件,再用
File: Compare Active File With对比两份列表——这才是查“结构缺失”的正确姿势
别指望图形化工具自动标红“project-a/src/utils 不存在于 project-b”,所有可视化方案都默认两边结构对齐;真正的不对称结构差异,必须先用命令提取,再人工或脚本比对。











