Go自学团队:Day 1 :批量文件重命名,替换文件名

phpip · · 3809 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

``` /** 批量文件重命名,替换文件名 王参加 2018-03-08 23:00 */ package main import ( "flag" "fmt" "os" "path/filepath" "strings" ) func main() { // 解析命令行参数 var dir string flag.StringVar(&dir, "d", "", "要替换的目录物理路径,如:/tmp/go/") var oldstr string flag.StringVar(&oldstr, "o", "", "要替换的字符:例如:替换 .php 或者 .inc.") var newstr string flag.StringVar(&newstr,"n" ,"","替换后的字符:例如:.inc.php") //下面这行是解析的,不能忘记 flag.Parse() if dir == "" || oldstr == "" || newstr == "" { fmt.Println("工具名称:文件重命名 - 自动化运维工具 - 作者:王参加") fmt.Println("") fmt.Println("使用方法:./rename -d \"/tmp/go/\" -o \"inc.test.php\" -n \".inc.php\"") flag.Usage() return } // 遍历文件夹,获取文件路径 paths := make([]string, 0) filepath.Walk(dir, func(path string, info os.FileInfo, err error) error { if !info.IsDir() { paths = append(paths, path) } return nil }) // 遍历文件路径,修改文件名 for i,path := range paths { //newPath := filepath.Join(filepath.Dir(path), fmt.Sprintf(pattern, i+1)+filepath.Ext(path)) //filepath.Base(path) str:=filepath.Base(path) str = strings.Replace(str, oldstr, newstr, -1) //filepath.Ext(path) filepath.Base(path) newPath := filepath.Join(filepath.Dir(path), str) fmt.Println(i+1) fmt.Println(path) fmt.Println(newPath) os.Rename(path, newPath) } } ``` 希望一起进度学习的朋友可以申请加入自学团队:http://163.fm/8Qokjg5e 申请加入后,每周有3天需要提交作业。

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

3809 次点击  
加入收藏 微博
1 回复  |  直到 2018-09-18 16:36:41
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传