You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Git文件名对比需求:如何识别新版本文件夹中删除的文件

我明白你需要对比两个文件夹的文件名,找出新版本中被删除的文件——git diff --name-only确实只默认展示变更的文件,但我们可以调整参数或者用其他工具轻松实现需求,下面给你几个实用的方案:

方案1:用Git实现(支持仓库或本地目录对比)

如果你的两个文件夹关联Git仓库(比如新版本是某个分支/提交,或者只是本地两个独立目录),可以给git diff加上过滤参数来只显示被删除的文件:

  • 对比Git仓库中的两个提交/分支,找出新版本中删除的文件:

    git diff --name-only --diff-filter=D <旧版本提交ID/分支名> <新版本提交ID/分支名>
    

    这里的--diff-filter=D是关键,它告诉Git只筛选出**被删除(Deleted)**的文件。

  • 直接对比本地两个独立文件夹(无需Git仓库):

    git diff --name-only --diff-filter=D /path/to/old-folder /path/to/new-folder
    

    Git支持直接对比本地目录,不用先初始化仓库,非常方便。

方案2:不用Git,用系统自带命令

如果不想依赖Git,不同系统的自带命令也能实现:

Linux/macOS 环境

方法一:用diff命令快速过滤

diff --recursive --brief /path/to/old-folder /path/to/new-folder | grep "only in /path/to/old-folder"
  • --recursive:递归遍历所有子文件夹
  • --brief:只输出差异的概要信息,不会显示文件内容差异
  • grep过滤后,结果就是仅存在于旧文件夹的文件,也就是新版本中被删除的文件。

方法二:用find+comm精准对比

适合需要更清晰的文件路径列表的场景:

  1. 导出旧文件夹的所有文件路径:
    find /path/to/old-folder -type f | sort > old-files.txt
    
  2. 导出新文件夹的所有文件路径:
    find /path/to/new-folder -type f | sort > new-files.txt
    
  3. 对比两个列表,找出仅在旧文件夹存在的文件:
    comm -23 old-files.txt new-files.txt
    
    comm -23表示只保留第一个文件(old-files.txt)独有的行,也就是被删除的文件。

Windows 环境(PowerShell)

用PowerShell的内置命令可以轻松实现递归对比:

Compare-Object -ReferenceObject (Get-ChildItem -Recurse -Path C:\old-folder -Name) -DifferenceObject (Get-ChildItem -Recurse -Path C:\new-folder -Name) | Where-Object { $_.SideIndicator -eq '<=' } | Select-Object -ExpandProperty InputObject
  • Get-ChildItem -Recurse -Name:递归获取文件夹内所有文件的相对路径
  • Compare-Object:对比两个路径列表
  • Where-Object { $_.SideIndicator -eq '<=' }:筛选出仅存在于旧文件夹的条目(<=代表来自左侧的参考对象)

内容的提问来源于stack exchange,提问作者Kuba Dabrowski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:30:30