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

如何在Rust中删除指定目录下带有特定后缀名的文件

Rust删除指定目录下所有.html后缀文件的可行实现方案

方案1:仅使用标准库实现(无第三方依赖)

适合不想引入额外依赖的场景,默认仅处理目标目录的直接子文件,不递归子目录:

use std::fs;
use std::path::Path;

fn delete_html_files(dir_path: &str) -> Result<(), Box<dyn std::error::Error>> {
    // 读取目录下的所有条目
    let entries = fs::read_dir(Path::new(dir_path))?;

    for entry in entries {
        let entry = entry?;
        let path = entry.path();

        // 只处理文件,跳过目录
        if path.is_file() {
            // 判断后缀是否为html
            if let Some(ext) = path.extension() {
                if ext == "html" {
                    // 执行删除
                    fs::remove_file(&path)?;
                    println!("已删除: {}", path.display());
                }
            }
        }
    }
    Ok(())
}

fn main() -> Result<(), Box<dyn std::error::Error>> {
    // 替换为你的目标目录路径
    let target_dir = "./test_dir";
    delete_html_files(target_dir)?;
    Ok(())
}

注意事项

  • 如果需要递归处理子目录,可自行实现递归遍历逻辑,或使用方案2的第三方库简化开发
  • 可根据业务需要调整错误处理逻辑,比如跳过无权限访问的文件、记录删除失败的路径等,避免程序直接终止

方案2:使用walkdir第三方库实现(支持递归遍历,代码更简洁)

适合需要递归处理多层子目录的场景,代码更精简,错误处理更友好。
首先在Cargo.toml中添加依赖:

[dependencies]
walkdir = "2.5.0"

实现代码:

use std::fs;
use walkdir::WalkDir;

fn delete_html_files_recursive(dir_path: &str) -> Result<(), Box<dyn std::error::Error>> {
    // 遍历目录下所有条目,默认递归所有子目录
    for entry in WalkDir::new(dir_path) {
        let entry = entry?;
        let path = entry.path();

        if path.is_file() {
            if let Some(ext) = path.extension() {
                if ext == "html" {
                    fs::remove_file(path)?;
                    println!("已删除: {}", path.display());
                }
            }
        }
    }
    Ok(())
}

fn main() -> Result<(), Box<dyn std::error::Error>> {
    // 替换为你的目标目录路径
    let target_dir = "./test_dir";
    delete_html_files_recursive(target_dir)?;
    Ok(())
}

注意事项

  • 如果不需要递归处理子目录,可在WalkDir::new(dir_path)后追加.max_depth(1)限制仅遍历第一层目录
  • 可通过filter_entry方法提前过滤不需要遍历的目录,进一步提升遍历效率

可选安全优化

如果担心误删文件,可先收集所有符合条件的文件路径,确认后再执行删除操作:

  • 先遍历目录把所有后缀为.html的文件路径存到Vec里
  • 打印所有待删除的路径和总数量,等待用户输入确认后再批量执行删除

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 07:24:00