Skip to content

jwy-hm/Universal_File_Cleaner

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 

Repository files navigation

Universal File Cleaner (通用文件清洗工具)

这是一个用于跨平台文件预处理的轻量级 Python 工具,适用于任何需要整理文件名的场景。

主要解决从 macOS 系统拷贝、解压或上传文件到 Linux/Windows 服务器时常见的两个通用问题:

  1. 删除垃圾文件:自动清理 macOS 产生的 ._ 开头的隐藏索引文件(AppleDouble files),以及 .DS_Store 系统文件,这些文件在非 Mac 系统中不仅无用,还常导致程序读取错误。
  2. 规范化命名:递归将文件名和文件夹名中的空格替换为下划线 (_),解决命令行工具、脚本批处理或代码读取文件时的路径解析报错问题。

背景 (Why use this?)

在日常开发、数据分析或服务器运维中,文件命名规范至关重要。

  • 空格的危害:许多命令行工具(如 Bash, Makefiles)和编程语言在处理带空格的路径时需要繁琐的转义。如果文件名包含空格,批量处理脚本往往会意外中断。
  • macOS 的“幽灵”文件:macOS 文件系统会自动生成以 ._ 开头的隐藏文件以及 .DS_Store 文件来存储元数据。当这些文件被传输到 Linux 服务器时,它们不仅占用 inode,还会被许多自动化程序误认为是有效数据文件(如误读为图片、文本或代码文件),从而引发 UnicodeDecodeError 或格式错误。

本工具最初为生物信息学数据清洗设计,但完全适用于任何需要批量规范文件结构的项目,如:

  • 整理数据集 (Dataset Organization)
  • Web 服务器文件上传预处理
  • 代码仓库清理
  • 批量归档文档

功能特性

  • 🛡️ 安全模式:支持 --dry-run 预览模式,先看后改,防止误操作。
  • 📝 日志记录:自动生成日志文件,记录每一个被删除或重命名的文件,支持自定义日志路径。
  • 🌳 递归处理:自动遍历所有子文件夹,无论目录结构多深。
  • 🔄 逻辑严谨:采用倒序遍历(Bottom-up),优先处理子文件,最后处理父目录,避免因父目录改名导致的子路径失效问题。

使用方法 (Usage)

1. 准备环境

确保已安装 Python 3:

python3 --version

2. 下载脚本

下载 clean_files.py 到你的服务器或本地。

3. 运行命令

基本用法(日志保存在当前目录):

python3 clean_files.py <你的目标文件夹路径>

示例:清理一个包含文档和图片的目录

python3 clean_files.py ./my_project_assets

指定日志文件位置:

python3 clean_files.py ./my_dataset --log /tmp/cleaning_record.log

预览模式 (推荐首次运行时使用): 如果你不敢确定会删掉什么,加上 --dry-run 参数,工具只会列出计划的操作而不执行:

python3 clean_files.py ./my_dataset --dry-run

效果演示

运行前:

my_project_assets/
├── .DS_Store                   <-- macOS 垃圾文件
├── ._Presentation Deck/        <-- macOS 垃圾隐藏文件
├── Presentation Deck/          <-- 带空格的目录
│   ├── ._image 01.png          <-- macOS 垃圾隐藏文件
│   └── image 01.png            <-- 带空格的文件
└── raw data/

运行后:

my_project_assets/
├── Presentation_Deck/          <-- 目录空格已修复
│   └── image_01.png            <-- 文件空格已修复,垃圾文件已删除
└── raw_data/                   <-- 目录空格已修复

日志输出示例:

2026-01-13 23:49:17,886 - INFO - [删除垃圾文件] .DS_Store
2026-01-13 23:49:17,886 - INFO - [删除垃圾文件] ._image 01.png
2026-01-13 23:49:17,886 - INFO - [重命名文件] image 01.png -> image_01.png
2026-01-13 23:49:17,886 - INFO - [重命名目录] Presentation Deck -> Presentation_Deck

许可证

MIT License

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages