来源:械说
在《Go语言100个实战案例》中的文件与IO操作篇 - 案例17:批量重命名文件的完整内容,适合初学者实践如何使用 Go 操作文件系统并批量处理文件名。
🎯 案例目标
实现一个小工具,能够批量重命名指定目录下的所有文件,例如统一添加前缀、后缀,或按照顺序编号。
🧩 应用场景
• 批量重命名图片、视频、文档等• 整理爬虫下载的文件• 按规则生成项目资源命名
🧠 涉及知识点
• 使用 os.ReadDir() 读取目录内容• 使用 os.Rename() 修改文件名• 使用 filepath.Ext() 获取文件扩展名• 字符串拼接和格式化
💻 示例代码:为文件添加统一前缀packagemainimport("fmt""os""path/filepath")funcmain() { dir :="./testfiles"// 目标文件夹prefix :="new_"// 要添加的前缀// 读取目录下所有文件files, err := os.ReadDir(dir)iferr !=nil{ fmt.Println("读取目录失败:", err)return}for_, file :=rangefiles {iffile.IsDir() {continue// 跳过子目录} oldPath := filepath.Join(dir, file.Name()) newName := prefix + file.Name() newPath := filepath.Join(dir, newName)// 重命名文件err := os.Rename(oldPath, newPath)iferr !=nil{ fmt.Printf("重命名失败: %s -> %s, 错误: %v\n", oldPath, newPath, err) }else{ fmt.Printf("重命名成功: %s -> %s\n", oldPath, newPath) } }}
📂 示例目录结构(执行前)testfiles/├── a.jpg├── b.jpg├── c.png📂 执行后结果testfiles/├── new_a.jpg├── new_b.jpg├── new_c.png
🛠 技术说明
函数/模块用途说明os.ReadDir()获取指定路径下的所有文件和文件夹file.IsDir()判断是否为文件夹filepath.Join()拼接路径,避免平台兼容问题os.Rename()执行文件重命名操作
🧪 拓展用法:添加编号重命名newName := fmt.Sprintf("img_d%s", i+1, filepath.Ext(file.Name()))
执行结果:
img_001.jpgimg_002.jpgimg_003.png
📌 拓展练习
• 将所有文件名统一为小写• 移除文件名中的特殊字符• 支持同时添加前缀和后缀• 将文件按类型重命名,例如:photo_001.jpg、doc_001.pdf
✅ 小结
本案例让你掌握了如何读取目录文件并批量重命名,这一技能在数据清洗、媒体资源管理中非常实用。通过灵活控制文件名规则,你可以轻松构建批处理工具。
股票平台排行前十名提示:文章来自网络,不代表本站观点。