作者程序员小明儿字数约 9000 字阅读时间约 25 分钟难度⭐⭐ 初级系列OpenClaw 实战 16 例第 6 篇前置条件已完成 OpenClaw 环境部署和基础配置写在前面你是不是也这样桌面文件一大堆乱七八糟下载文件夹爆满找不到文件手动整理耗时耗力想自动化但不会写代码这篇文章彻底解决你的问题我将教你使用 OpenClaw 实现✅ 自动整理桌面文件✅ 自动整理下载文件夹✅ 自动分类归档✅ 自动重命名文件✅ 每天节省 1 小时学完本文你将能够配置文件整理功能创建文件整理技能设置定时任务扩展到实际工作场景先睹为快这是整理效果示例整理前桌面/ ├── 报告.docx ├── 报告_final.docx ├── 报告_final_v2.docx ├── 图片 1.png ├── 图片 2.png ├── 数据.xlsx ├── 数据备份.xlsx └── ...共 50 个文件整理后桌面/ ├── 文档/ │ ├── 报告.docx │ └── 报告_final.docx ├── 图片/ │ ├── 图片 1.png │ └── 图片 2.png ├── 表格/ │ ├── 数据.xlsx │ └── 数据备份.xlsx └── 其他/是不是很方便开始学习吧一、实现原理1.1 整体架构定时任务扫描文件夹识别文件类型创建目标文件夹移动文件记录日志流程说明定时任务Cron 定时触发扫描文件夹获取所有文件列表识别文件类型根据扩展名分类创建目标文件夹按类别创建文件夹移动文件移动到对应文件夹记录日志记录整理结果1.2 文件分类规则文件类型扩展名目标文件夹文档.doc, .docx, .pdf, .txt文档/图片.jpg, .png, .gif, .bmp图片/表格.xls, .xlsx, .csv表格/压缩.zip, .rar, .7z压缩/视频.mp4, .avi, .mov视频/音频.mp3, .wav, .flac音频/代码.py, .js, .java, .cpp代码/其他其他扩展名其他/1.3 为什么选择 OpenClaw方案优点缺点推荐度手动整理无成本耗时、易忘⭐文件管理软件可视化功能有限⭐⭐Python 脚本灵活需要编程⭐⭐⭐OpenClaw智能、自动、可定制需要配置⭐⭐⭐⭐⭐二、环境准备2.1 安装依赖基础依赖# 创建 Python 虚拟环境python3-mvenv file-organizer-envsourcefile-organizer-env/bin/activate# Linux/macOS# 或file-organizer-env\Scripts\activate# Windows# 安装基础依赖Python 标准库无需安装# shutil, os, pathlib 都是标准库2.2 创建工作目录# 创建工作目录mkdir-p~/openclaw-file-organizercd~/openclaw-file-organizer# 创建必要文件mkdir-pskills# 技能文件mkdir-plogs# 日志文件touchconfig.json# 配置文件2.3 目录结构~/openclaw-file-organizer/ ├── skills/ │ └── file-organizer/ # 文件整理技能 │ ├── SKILL.md │ └── handler.py ├── config.json # 配置文件 └── logs/ └── file-organizer.log三、创建文件整理技能3.1 技能结构skills/file-organizer/ ├── SKILL.md # 技能说明 ├── handler.py # 处理逻辑 └── requirements.txt # Python 依赖3.2 创建 SKILL.mdmkdir-pskills/file-organizercatskills/file-organizer/SKILL.mdEOF --- name: file-organizer description: 自动整理文件桌面、下载等 triggers: - 整理文件 - 整理桌面 - 整理下载 inputs: - name: path type: string description: 要整理的文件夹路径 - name: rules type: object description: 整理规则 outputs: - name: result type: object description: 整理结果 --- # 文件整理技能 ## 功能 - 整理桌面文件 - 整理下载文件夹 - 自动分类归档 - 自动重命名文件 ## 使用方法 - 说整理桌面 - 或说整理下载文件夹 ## 输入 - path: 文件夹路径 - rules: 整理规则 ## 输出 - result: 整理结果移动了多少文件 EOF3.3 创建 handler.pycatskills/file-organizer/handler.pyEOF #!/usr/bin/env python3 文件整理技能 import os import shutil from pathlib import Path from datetime import datetime import json # 文件分类规则 FILE_RULES { 文档: [.doc, .docx, .pdf, .txt, .md, .rtf], 图片: [.jpg, .jpeg, .png, .gif, .bmp, .svg, .webp], 表格: [.xls, .xlsx, .csv], 压缩: [.zip, .rar, .7z, .tar, .gz], 视频: [.mp4, .avi, .mov, .mkv, .flv], 音频: [.mp3, .wav, .flac, .aac], 代码: [.py, .js, .java, .cpp, .c, .h, .html, .css], 其他: [] # 其他所有文件 } def get_file_category(file_path): 获取文件类别 ext Path(file_path).suffix.lower() for category, extensions in FILE_RULES.items(): if ext in extensions: return category return 其他 def organize_files(path, rulesNone): 整理文件 path Path(path) if not path.exists(): return {success: False, error: f路径不存在{path}} # 统计 stats { total: 0, moved: 0, skipped: 0, errors: 0 } # 获取所有文件 files [f for f in path.iterdir() if f.is_file()] stats[total] len(files) # 整理每个文件 for file in files: try: # 获取类别 category get_file_category(file) # 创建目标文件夹 target_dir path / category target_dir.mkdir(exist_okTrue) # 目标路径 target_path target_dir / file.name # 如果目标已存在添加序号 if target_path.exists(): stem file.stem suffix file.suffix counter 1 while target_path.exists(): target_path target_dir / f{stem}_{counter}{suffix} counter 1 # 移动文件 shutil.move(str(file), str(target_path)) stats[moved] 1 except Exception as e: stats[errors] 1 return { success: True, stats: stats, message: f整理完成移动 {stats[moved]} 个文件 } def rename_files(path, pattern): 批量重命名文件 path Path(path) if not path.exists(): return {success: False, error: f路径不存在{path}} stats {renamed: 0, errors: 0} for i, file in enumerate(path.iterdir()): if file.is_file(): try: stem file.stem suffix file.suffix new_name pattern.format(indexi1, namestem, extsuffix) new_path file.parent / new_name file.rename(new_path) stats[renamed] 1 except Exception as e: stats[errors] 1 return { success: True, stats: stats, message: f重命名完成{stats[renamed]} 个文件 } def handle(input_data): 处理函数 action input_data.get(action, organize) path input_data.get(path, ~/Desktop) # 展开路径 path os.path.expanduser(path) if action organize: result organize_files(path) elif action rename: pattern input_data.get(pattern, {name}_{index}) result rename_files(path, pattern) else: result {success: False, error: f未知操作{action}} return result if __name__ __main__: # 测试整理桌面 result handle({action: organize, path: ~/Desktop}) print(result[message]) EOFchmodx skills/file-organizer/handler.py3.4 创建依赖文件catskills/file-organizer/requirements.txtEOF # 使用 Python 标准库无需额外依赖 # shutil, os, pathlib 都是标准库 EOF3.5 启用技能# 编辑配置文件openclaw config edit# 添加技能配置{skills:{enabled:[file-organizer]}}# 重新加载技能openclaw skills reload四、实战案例4.1 案例一整理桌面场景桌面文件乱七八糟自动整理步骤 1创建整理脚本catorganize-desktop.shEOF #!/bin/bash cd ~/openclaw-file-organizer # 整理桌面 openclaw agent --message 整理桌面文件。 路径~/Desktop echo 桌面整理完成 EOFchmodx organize-desktop.sh步骤 2运行脚本./organize-desktop.sh整理前桌面/ ├── 报告.docx ├── 图片 1.png ├── 数据.xlsx ├── 代码.py ├── 视频.mp4 └── ...共 50 个文件整理后桌面/ ├── 文档/ │ ├── 报告.docx │ └── ... ├── 图片/ │ ├── 图片 1.png │ └── ... ├── 表格/ │ ├── 数据.xlsx │ └── ... ├── 代码/ │ ├── 代码.py │ └── ... ├── 视频/ │ ├── 视频.mp4 │ └── ... └── 其他/4.2 案例二整理下载文件夹场景下载文件夹爆满自动整理步骤 1创建整理脚本catorganize-downloads.shEOF #!/bin/bash cd ~/openclaw-file-organizer # 整理下载文件夹 openclaw agent --message 整理下载文件夹。 路径~/Downloads echo 下载文件夹整理完成 EOFchmodx organize-downloads.sh步骤 2配置定时任务# 编辑 crontabcrontab-e# 每周日晚上 10 点整理022* *0cd~/openclaw-file-organizer./organize-downloads.sh4.3 案例三批量重命名文件场景批量重命名照片步骤 1创建重命名脚本catrename-photos.shEOF #!/bin/bash cd ~/openclaw-file-organizer # 批量重命名照片 openclaw agent --message 批量重命名照片。 路径~/Pictures/2026-03 模式旅行_{index}.jpg echo 照片重命名完成 EOFchmodx rename-photos.sh步骤 2运行脚本./rename-photos.sh重命名前2026-03/ ├── IMG_001.jpg ├── IMG_002.jpg ├── IMG_003.jpg └── ...重命名后2026-03/ ├── 旅行_1.jpg ├── 旅行_2.jpg ├── 旅行_3.jpg └── ...五、自定义扩展5.1 自定义分类规则扩展 handler.py# 添加自定义规则CUSTOM_RULES{工作:[.docx,.xlsx,.pptx],学习:[.pdf,.md,.txt],项目:[.py,.js,.java]}defget_file_category(file_path):获取文件类别支持自定义规则extPath(file_path).suffix.lower()# 先检查自定义规则forcategory,extensionsinCUSTOM_RULES.items():ifextinextensions:returncategory# 再检查默认规则forcategory,extensionsinFILE_RULES.items():ifextinextensions:returncategoryreturn其他5.2 添加子目录整理扩展 handler.pydeforganize_with_subdirs(path):整理文件并创建子目录pathPath(path)# 按日期创建子目录forfileinpath.iterdir():iffile.is_file():# 获取文件修改日期mtimedatetime.fromtimestamp(file.stat().st_mtime)date_dirpath/mtime.strftime(%Y-%m)date_dir.mkdir(exist_okTrue)# 移动文件shutil.move(str(file),str(date_dir/file.name))5.3 添加文件归档添加压缩归档功能importzipfileimporttarfiledefarchive_old_files(path,days30):归档旧文件pathPath(path)archive_dirpath/archivearchive_dir.mkdir(exist_okTrue)# 获取旧文件cutoffdatetime.now()-timedelta(daysdays)old_files[fforfinpath.iterdir()iff.is_file()anddatetime.fromtimestamp(f.stat().st_mtime)cutoff]# 创建压缩包archive_patharchive_dir/farchive_{datetime.now().strftime(%Y%m%d)}.zipwithzipfile.ZipFile(archive_path,w)aszipf:forfileinold_files:zipf.write(file,file.name)file.unlink()# 删除原文件return{success:True,archived:len(old_files),archive_file:str(archive_path)}六、定时任务配置6.1 每天整理桌面配置 Cron# 编辑 crontabcrontab-e# 每天晚上 10 点整理桌面022* * *cd~/openclaw-file-organizer./organize-desktop.sh6.2 每周整理下载配置 Cron# 编辑 crontabcrontab-e# 每周日晚上 10 点整理下载022* *0cd~/openclaw-file-organizer./organize-downloads.sh6.3 每月归档旧文件配置 Cron# 编辑 crontabcrontab-e# 每月 1 号凌晨 1 点归档旧文件011* *cd~/openclaw-file-organizerpython3-c from skills.file_organizer.handler import archive_old_files result archive_old_files(~/Desktop, days30) print(f归档完成{result[\archived\]} 个文件) 七、常见问题Q1文件移动失败问题Permission denied解决# 检查权限ls-la~/Desktop# 修改权限chmod755~/Desktop# 或使用 sudosudo./organize-desktop.shQ2文件被占用问题[Errno 16] Device or resource busy解决# 添加重试机制importtimedefmove_with_retry(src,dst,retries3):foriinrange(retries):try:shutil.move(src,dst)returnTrueexcept:time.sleep(1)returnFalseQ3中文文件名乱码问题中文文件名乱码解决# 确保使用 UTF-8 编码importos os.environ[PYTHONIOENCODING]utf-8Q4整理后找不到文件问题文件被移动到其他文件夹解决# 查看日志catlogs/file-organizer.log# 搜索文件find~/Desktop-name文件名Q5误整理重要文件问题重要文件被移动到错误文件夹解决# 添加白名单WHITELIST[重要文件.docx,合同.pdf]defshould_skip(file):是否跳过文件returnfile.nameinWHITELIST八、性能优化8.1 加快整理速度使用多线程fromconcurrent.futuresimportThreadPoolExecutordeforganize_files_fast(path):快速整理多线程pathPath(path)files[fforfinpath.iterdir()iff.is_file()]withThreadPoolExecutor(max_workers10)asexecutor:list(executor.map(move_file,files))8.2 减少日志大小日志轮转fromlogging.handlersimportRotatingFileHandler# 创建日志处理器handlerRotatingFileHandler(logs/file-organizer.log,maxBytes10*1024*1024,# 10MBbackupCount5)九、总结9.1 本文要点实现原理扫描 → 分类 → 创建文件夹 → 移动文件环境准备创建目录、创建技能技能开发创建文件整理技能实战案例整理桌面、整理下载、批量重命名自定义扩展自定义规则、子目录整理、文件归档定时任务每天、每周、每月自动整理常见问题5 个常见问题及解决方案性能优化多线程、日志轮转9.2 实际效果时间节省手动整理30 分钟/次自动整理1 分钟/次节省时间95%质量提升✅ 文件整齐有序✅ 快速找到文件✅ 桌面整洁美观9.3 下一步第 7 篇预告《OpenClaw 自动回复消息》你将学到自动回复微信/钉钉消息智能识别消息内容自定义回复规则实际案例分析互动环节有问题在评论区留言我会逐一解答觉得有用点赞 收藏分享给更多需要的人已实现在评论区分享你的使用体验系列文章[第 1 篇] OpenClaw 自动写周报日报实战[第 2 篇] OpenClaw 自动处理 Excel 数据实战[第 3 篇] OpenClaw 自动发送邮件/消息实战[第 4 篇] OpenClaw 自动爬取网站内容实战[第 5 篇] OpenClaw 自动生成 PPT 实战[第 6 篇] OpenClaw 自动整理文件 ← 本文[第 7 篇] OpenClaw 自动回复消息…更多敬请期待