anon-flatten 🎸
一个简单的文件目录扁平化工具,让复杂的嵌套文件夹结构变得和爱音一样平。
✨ 功能特性
- 🔍 递归遍历 - 深入探索源文件夹的每一个角落
- 📁 扁平化处理 - 将所有嵌套文件整理到单一目录
- 🛡️ 冲突处理 - 智能处理重名文件,避免覆盖
- 🎯 文件过滤 - 按扩展名排除不需要的文件
- 🎨 彩色输出 - MyGO!!!!! 主题配色,赏心悦目
- 📊 进度显示 - 实时显示处理进度
- 👀 预览模式 - 先看后做,安全可靠
- ✂️ 双模式 - 支持复制或剪切操作
- ⚡ 高效安全 - 基于 Rust 构建,安全且高性能
🚀 快速开始
从 Crates.io 安装
从源码构建
使用方法
# 基本用法(复制模式)
# 预览模式(不实际操作)
# 剪切模式(移动文件)
# 排除特定扩展名的文件(推荐:逗号分隔)
# 排除特定扩展名的文件(也支持多次指定)
# 示例
参数说明
| 参数 | 短选项 | 长选项 | 说明 |
|---|---|---|---|
| 源文件夹 | -i |
--input |
要扁平化的源目录路径 |
| 目标文件夹 | -o |
--output |
扁平化后的目标目录路径 |
| 预览模式 | -p |
--preview |
只预览操作,不实际执行 |
| 剪切模式 | -x |
--cut |
移动文件而非复制 |
| 排除扩展名 | -e |
--exclude |
排除指定扩展名(逗号分隔或多次使用) |
📖 使用示例
示例 1: 基本扁平化
假设你有这样的文件结构:
messy_folders/
├── docs/
│ ├── report.pdf
│ └── notes/
│ └── meeting.txt
├── images/
│ ├── photo1.jpg
│ └── screenshots/
│ └── screen.png
└── code/
└── main.rs
运行:
结果:
flat_output/
├── report.pdf
├── meeting.txt
├── photo1.jpg
├── screen.png
└── main.rs
示例 2: 处理重名文件
如果有重名文件:
source/
├── dir1/
│ └── file.txt
└── dir2/
└── file.txt
扁平化后会自动添加父目录后缀:
target/
├── file.txt # 来自 dir1
└── file_dir2.txt # 来自 dir2
示例 3: 排除特定文件
排除临时文件和日志:
# 推荐写法:逗号分隔
# 也支持多次指定
假设源目录:
project/
├── src/
│ ├── main.rs
│ └── lib.rs
├── target/
│ └── debug.log
└── cache/
└── temp.tmp
扁平化后只包含非排除类型的文件:
clean_files/
├── main.rs
└── lib.rs
示例 4: 预览模式
先预览操作:
输出示例:
🎸 开始扁平化操作 | Starting flatten operation...
📂 源文件夹 | Source: ./source
📁 目标文件夹 | Target: ./target
🔄 操作模式 | Operation: 复制 | Copy
👀 预览模式 | Preview mode - operations to be performed:
📋 找到 | Found: 7 个文件 | files
复制 | Copy source/file1.txt -> file1.txt
复制 | Copy source/docs/report.pdf -> report.pdf
复制 | Copy source/duplicate/file1.txt -> file1_duplicate.txt
...
🛠️ 开发
构建
# 开发构建
# 发布构建
# 运行测试
# 运行集成测试
# 生成文档
作为库使用
use ;
use PathBuf;
🎨 主题颜色
本项目使用 MyGO!!!!! 乐队成员的代表色:
| 成员 | 颜色 | RGB | 用途 |
|---|---|---|---|
| 千早爱音 | 粉色 | #FF8899 |
主要强调色 |
| 高松灯 | 蓝色 | #77BBDD |
标签和提示 |
| 长崎爽世 | 黄色 | #FFDD88 |
路径显示 |
| 椎名立希 | 紫色 | #7777AA |
错误和移动 |
| 要乐奈 | 绿色 | #77DD77 |
成功和复制 |
📝 TODO
- 添加进度条显示
- 添加预览模式
- 模块化代码结构
- 完善单元测试
- 添加集成测试
- 自定义错误类型
- 支持文件过滤(按扩展名)
- 支持文件大小过滤
- 支持软链接处理
- 添加配置文件支持
- 支持多线程并行处理
- 添加日志输出选项
📜 许可证
本项目采用 MIT 许可证。详见 LICENSE 文件。
🎨 致谬
- 角色设计来自 BanG Dream! 的千早爱音
- 原图作者:Pixiv - 130108237
- 灵感来源于 MyGO!!!!! 乐队
就像爱音一样,简单直接,一马平川!🎸