go 小白一枚,建了一个关于go的微信交流群 欢迎大家加入,加我微信拉群 微信号:XU1014129578 暗号 :gogogo
朋友想把文件夹中的图片名称加上当前文件夹名的前缀,文件数量有点大,所以找我帮忙。
网上找了一段代码(如:GetAllfiles() ) 修修改改搞定了...
```
package main
import (
"fmt"
"io/ioutil"
"os"
"strings"
)
func GetAllFiles(dirPath string) (files []string, err error) {
var dirs []string
dir, err := ioutil.ReadDir(dirPath)
if err != nil {
return nil, err
}
PthSep := string(os.PathSeparator)
//suffix = strings.ToUpper(suffix) //忽略后缀匹配的大小写
for _, fi := range dir {
if fi.IsDir() {
dirs = append(dirs, dirPath+PthSep+fi.Name())
newfiles, _ := GetAllFiles(dirPath + PthSep + fi.Name())
files = append(files, newfiles...)
} else {
files = append(files, dirPath+PthSep+fi.Name())
}
}
return files, nil
}
func Rename(fileUrl string){
urlStr := []rune(fileUrl)
suffix := string(urlStr[len(urlStr)-4:])
if suffix != ".jpg"{
return
}
strArr := strings.Split(fileUrl, "\\")
tempName := strArr[len(strArr)-2]+"_"+strArr[len(strArr)-1]
oldName := strArr[len(strArr)-1]
fileNameArr := strings.Split(strArr[len(strArr)-1], "_")
if fileNameArr[0] == strArr[len(strArr)-2]{
fmt.Println("已修改,不再重复修改")
return
}
newPath := strings.Replace(fileUrl,oldName,tempName , -2)
os.Rename(fileUrl,newPath)
fmt.Println("newPath:",newPath)
return
}
func main() {
fmt.Println("test build")
//需要替换的文件夹目录
path := "E:\\goProject\\FileRename\\test"
files, err := GetAllFiles(path)
if err != nil {
panic(err)
}
for i, _ := range files {
Rename(files[i])
}
fmt.Println("test complete")
}
```
有疑问加站长微信联系(非本文作者))