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

Windows下如何用正则递归删除有对应dbg兄弟文件的指定文件?

解决Windows 10中递归删除符合特定条件文件的方案

针对你需要在Windows 10系统里,通过PowerShell或Git控制台(Unix命令环境)递归删除指定文件的需求,下面分别给出两种完全匹配规则的实现方案:

一、使用PowerShell实现

这个方案会递归遍历目标文件夹,筛选出非-dbg版本的.js文件,同时验证该文件所在目录下存在对应的-dbg版本兄弟文件,再执行删除操作。

命令(预览模式)

Get-ChildItem -Recurse -File -Filter "*.js" | Where-Object {
    # 排除本身带-dbg的.js文件
    $_.Name -notmatch '.+?-dbg.*?\.js'
    # 检查同目录下是否存在对应的-dbg版本文件
    -and (Test-Path (Join-Path $_.DirectoryName ($_.BaseName + "-dbg" + $_.Extension)))
} | Remove-Item -WhatIf

说明

  • Get-ChildItem -Recurse -File -Filter "*.js":递归查找所有.js类型的文件
  • Where-Object 中的两个核心条件:
    1. $_.Name -notmatch '.+?-dbg.*?\.js':确保待处理文件不是-dbg版本的文件
    2. Test-Path (...):验证当前文件所在目录下,存在基础文件名后加-dbg的兄弟文件
  • -WhatIf:预览将要删除的文件列表,确认无误后去掉该参数即可执行实际删除

二、使用Git控制台(Unix命令环境)实现

Git Bash支持Unix命令,我们可以用find命令结合shell脚本完成需求,逻辑和PowerShell完全一致。

命令(带删除提示)

find . -type f -name "*.js" ! -name "*-dbg*.js" -exec sh -c '
    for file do
        # 生成对应的-dbg版本文件名
        dbg_file="${file%.*}-dbg.${file##*.}"
        # 检查-dbg文件是否存在
        if [ -f "$dbg_file" ]; then
            echo "准备删除:$file"
            rm "$file"
        fi
    done
' sh {} +

说明

  • find . -type f -name "*.js" ! -name "*-dbg*.js":递归查找所有.js文件,排除带-dbg的版本
  • ${file%.*}:提取文件的基础名称(不含扩展名),${file##*.}:提取文件扩展名,拼接成对应的-dbg版本文件名
  • echo "准备删除:$file":打印将要删除的文件路径,确认无误后可以删除这一行,直接执行rm操作

示例验证

以你提供的测试文件夹为例:

  • 会被删除的文件:ActionMode.js、Component.js、DualContribution.controller.js(均存在对应的-dbg兄弟文件)
  • 不会被处理的文件:ActionMode-dbg.js、Component-dbg.js、DualContribution-dbg.controller.js(本身是-dbg版本,被排除);resources.js(无对应-dbg兄弟文件);manifest-json(不是.js文件)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 21:47:33