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

如何删除目录及子目录中名称含指定字符串的文件?

C# 实现遍历多级目录删除含指定字符串的文件

核心修改方向

  • 递归遍历子目录:替换原有的根目录文件获取逻辑,使用Directory.EnumerateFiles的重载方法,指定SearchOption.AllDirectories参数来遍历目标目录下的所有层级子目录
  • 文件名筛选逻辑:在获取文件列表时,新增判断条件,检查文件名是否包含指定的目标字符串

完整可运行代码

using System;
using System.IO;
using System.Linq;

class TargetFileDeleter
{
    static void Main(string[] args)
    {
        // 配置目标目录和要匹配的字符串
        string targetDirectory = @"D:\TEMP\MYTEST";
        string targetString = "3015494";

        // 先校验目录是否存在
        if (!Directory.Exists(targetDirectory))
        {
            Console.WriteLine("指定的目标目录不存在,请检查路径");
            return;
        }

        try
        {
            // 递归获取所有符合条件的文件:遍历所有子目录,筛选文件名含目标字符串的文件
            var matchedFiles = Directory.EnumerateFiles(
                targetDirectory,
                "*", // 匹配所有类型文件,如需指定后缀可改为"*.mq5"
                SearchOption.AllDirectories)
                .Where(filePath => Path.GetFileName(filePath).Contains(targetString));

            // 逐个删除文件并处理异常
            foreach (var file in matchedFiles)
            {
                try
                {
                    File.Delete(file);
                    Console.WriteLine($"已成功删除:{file}");
                }
                catch (IOException ex)
                {
                    Console.WriteLine($"删除失败 {file}:文件正被占用或IO错误 - {ex.Message}");
                }
                catch (UnauthorizedAccessException ex)
                {
                    Console.WriteLine($"删除失败 {file}:无操作权限 - {ex.Message}");
                }
            }
        }
        catch (UnauthorizedAccessException ex)
        {
            Console.WriteLine($"目录访问失败:无权限访问目标目录 - {ex.Message}");
        }
        catch (DirectoryNotFoundException ex)
        {
            Console.WriteLine($"目录异常:目标目录在操作中被移除 - {ex.Message}");
        }
    }
}

关键细节说明

  • 遍历效率优化:使用EnumerateFiles而非GetFiles,前者采用延迟加载模式,无需一次性将所有文件路径加载到内存,适合处理大量文件或深层目录场景
  • 筛选规则扩展:
    • 如需忽略大小写匹配,将Contains(targetString)改为Contains(targetString, StringComparison.OrdinalIgnoreCase)
    • 如需正则匹配复杂规则,可替换为Regex.IsMatch(Path.GetFileName(filePath), @"你的正则表达式")(需引入System.Text.RegularExpressions命名空间)
  • 异常容错处理:针对每个文件单独捕获删除异常,避免单个文件操作失败中断整个删除流程;同时捕获目录级别的权限、存在性异常,提升代码健壮性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 07:10:32