```
/**
批量文件重命名,替换文件名
王参加
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天需要提交作业。