Go 如何批量修改文件名
工作中遇到瞭批量修改文件名的情況,為此寫瞭個小程序,以供日後方便查看。
用法:
renamedirfiles.exe -d "E:\shared\圖片素材\ps123_20121120_01\背景圖片打包下載" -p "bg%d"
代碼如下:
package main import ( "flag" "fmt" "os" "path/filepath" ) func main() { // 解析命令行參數 var dir string flag.StringVar(&dir, "d", "", "directory path") var pattern string flag.StringVar(&pattern, "p", "", "name pattern, eg. newname%d") flag.Parse() if dir == "" || pattern == "" { 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)) os.Rename(path, newPath) } }
補充:使用Golang進行大量修改文件名
背景
在我們平時下載資料時,我們下載的資料的命名經常會帶有某某網站的域名作為廣告,雖為白嫖黨,但是看起來很不舒服,下面我們使用Go語言進行大量修改文件名,將文件名中的廣告域名去除。
代碼
作用:對該文件夾下的文件進行循環遍歷,將文件名帶有xxx.cn等等字樣的文件後綴名去除
import ( "fmt" "io/ioutil" "log" "os" "strings" ) func main() { path:="C:\\Users\\Desktop\\3_2020最新_Python_(MySQL_SQL_Redis)數據庫詳解" listFiles(path) } func listFiles(dirname string) { fileInfos, err := ioutil.ReadDir(dirname) if err!=nil { log.Fatal(err) } for _, f := range fileInfos { filename := dirname + "\\" + f.Name() //記錄當前文件夾下的文件名 //如果文件名包含如下字段,則將其文件名更改 if strings.Contains(f.Name(),"(更多資源訪問:www.xxx.cn)") { os.Rename(filename,dirname+"\\"+strings.Replace(f.Name(),"(更多資源訪問:www.xxx.cn)","",-1)) } fmt.Println(filename) //打印文件地址 if f.IsDir() { //判斷是否是文件夾 如果是文件夾則繼續遞歸調用 listFiles(filename) } } }
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。
推薦閱讀:
- Go遞歸修改文件名的實例代碼
- go 壓縮解壓zip文件源碼示例
- Golang 實現復制文件夾同時復制文件
- Golang中的path/filepath包用法
- Golang開發命令行之flag包的使用方法