设为首页收藏本站
网站公告 | 这是第一条公告
     

 找回密码
 立即注册
缓存时间12 现在时间12 缓存数据 做人啊,最要紧的是开心 你饿不饿,我去给你煮碗面 其实我不想给你煮面我只是想见你一面

做人啊,最要紧的是开心 你饿不饿,我去给你煮碗面 其实我不想给你煮面我只是想见你一面 -- 问你是否跟我走

查看: 509|回复: 0

使用Go语言开发一个命令行文件管理工具

[复制链接]

  离线 

TA的专栏

  • 打卡等级:热心大叔
  • 打卡总天数:227
  • 打卡月天数:0
  • 打卡总奖励:3343
  • 最近打卡:2025-04-13 11:14:19
等级头衔

等級:晓枫资讯-上等兵

在线时间
0 小时

积分成就
威望
0
贡献
417
主题
387
精华
0
金钱
4590
积分
856
注册时间
2023-1-6
最后登录
2025-5-31

发表于 2025-5-31 07:04:01 | 显示全部楼层 |阅读模式
导语
还在为繁琐的文件操作烦恼吗?今天教你用Go语言开发一款命令行文件管理工具,支持批量重命名、删除、创建、移动文件,解放双手,提升效率!文末附完整源码,建议收藏!

一、工具功能一览


  • 批量重命名:支持正则表达式匹配文件名
  • 批量删除:按正则表达式删除文件
  • 创建文件/目录:一键创建文件或目录
  • 批量移动:将匹配文件移动到指定目录

二、核心代码解析


1. 主程序结构
  1. func main() {
  2.     // 定义子命令
  3.     renameCmd := flag.NewFlagSet("rename", flag.ExitOnError)
  4.     deleteCmd := flag.NewFlagSet("delete", flag.ExitOnError)
  5.     createCmd := flag.NewFlagSet("create", flag.ExitOnError)
  6.     moveCmd := flag.NewFlagSet("move", flag.ExitOnError)

  7.     // 解析命令行参数
  8.     switch os.Args[1] {
  9.     case "rename":
  10.         renameCmd.Parse(os.Args[2:])
  11.         renameFiles(*renamePattern, *renameReplacement)
  12.     case "delete":
  13.         deleteCmd.Parse(os.Args[2:])
  14.         deleteFiles(*deletePattern)
  15.     case "create":
  16.         createCmd.Parse(os.Args[2:])
  17.         createFileOrDir(*createPath, *createIsDir)
  18.     case "move":
  19.         moveCmd.Parse(os.Args[2:])
  20.         moveFiles(*moveSource, *moveTarget)
  21.     default:
  22.         fmt.Println("Expected subcommands: rename, delete, create, or move")
  23.         os.Exit(1)
  24.     }
  25. }
复制代码
2. 批量重命名
  1. func renameFiles(pattern, replacement string) {
  2.     regex, err := regexp.Compile(pattern)
  3.     if err != nil {
  4.         log.Fatalf("Invalid regex pattern: %v", err)
  5.     }

  6.     filepath.Walk(".", func(path string, info os.FileInfo, err error) error {
  7.         if regex.MatchString(info.Name()) {
  8.             newName := regex.ReplaceAllString(info.Name(), replacement)
  9.             newPath := filepath.Join(filepath.Dir(path), newName)
  10.             fmt.Printf("Renaming %s to %s\n", path, newPath)
  11.             return os.Rename(path, newPath)
  12.         }
  13.         return nil
  14.     })
  15. }
复制代码
使用示例
  1. # 将所有.txt文件重命名为.md
  2. go run main.go rename -pattern="\.txt$" -replace=".md"
复制代码
3. 批量删除
  1. func deleteFiles(pattern string) {
  2.     regex, err := regexp.Compile(pattern)
  3.     if err != nil {
  4.         log.Fatalf("Invalid regex pattern: %v", err)
  5.     }

  6.     filepath.Walk(".", func(path string, info os.FileInfo, err error) error {
  7.         if regex.MatchString(info.Name()) {
  8.             fmt.Printf("Deleting %s\n", path)
  9.             return os.Remove(path)
  10.         }
  11.         return nil
  12.     })
  13. }
复制代码
使用示例
  1. # 删除所有.log文件
  2. go run main.go delete -pattern="\.log$"
复制代码
4. 创建文件/目录
  1. func createFileOrDir(path string, isDir bool) {
  2.     if isDir {
  3.         err := os.MkdirAll(path, 0755)
  4.         if err != nil {
  5.             log.Fatalf("Error creating directory: %v", err)
  6.         }
  7.         fmt.Printf("Created directory: %s\n", path)
  8.     } else {
  9.         file, err := os.Create(path)
  10.         if err != nil {
  11.             log.Fatalf("Error creating file: %v", err)
  12.         }
  13.         defer file.Close()
  14.         fmt.Printf("Created file: %s\n", path)
  15.     }
  16. }
复制代码
使用示例
  1. # 创建目录
  2. go run main.go create -path="new_dir" -dir

  3. # 创建文件
  4. go run main.go create -path="new_file.txt"
复制代码
5. 批量移动
  1. func moveFiles(sourcePattern, targetDir string) {
  2.     regex, err := regexp.Compile(sourcePattern)
  3.     if err != nil {
  4.         log.Fatalf("Invalid regex pattern: %v", err)
  5.     }

  6.     os.MkdirAll(targetDir, 0755)

  7.     filepath.Walk(".", func(path string, info os.FileInfo, err error) error {
  8.         if regex.MatchString(info.Name()) {
  9.             newPath := filepath.Join(targetDir, info.Name())
  10.             fmt.Printf("Moving %s to %s\n", path, newPath)
  11.             return os.Rename(path, newPath)
  12.         }
  13.         return nil
  14.     })
  15. }
复制代码
使用示例
  1. # 将所有.jpg文件移动到images目录
  2. go run main.go move -source="\.jpg$" -target="images"
复制代码
三、如何安装使用

安装Go环境(参考前文教程)
编译运行
  1. go build -o file-manager
  2. ./file-manager [command] [flags]
复制代码
以上就是使用Go语言开发一个命令行文件管理工具的详细内容,更多关于Go文件管理工具的资料请关注晓枫资讯其它相关文章!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
晓枫资讯-科技资讯社区-免责声明
免责声明:以上内容为本网站转自其它媒体,相关信息仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同其观点或证实其内容的真实性。
      1、注册用户在本社区发表、转载的任何作品仅代表其个人观点,不代表本社区认同其观点。
      2、管理员及版主有权在不事先通知或不经作者准许的情况下删除其在本社区所发表的文章。
      3、本社区的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,举报反馈:点击这里给我发消息进行删除处理。
      4、本社区一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
      5、以上声明内容的最终解释权归《晓枫资讯-科技资讯社区》所有。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~
严禁发布广告,淫秽、色情、赌博、暴力、凶杀、恐怖、间谍及其他违反国家法律法规的内容。!晓枫资讯-社区
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|晓枫资讯--科技资讯社区 本站已运行

CopyRight © 2022-2025 晓枫资讯--科技资讯社区 ( BBS.yzwlo.com ) . All Rights Reserved .

晓枫资讯--科技资讯社区

本站内容由用户自主分享和转载自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

如有侵权、违反国家法律政策行为,请联系我们,我们会第一时间及时清除和处理! 举报反馈邮箱:点击这里给我发消息

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表