下面是 Go 如何批量修改文件名的完整攻略:
1. 获取文件列表
首先需要获取需要批量修改的文件列表,这可以通过 Go 的标准库中的 filepath.Walk
方法来实现。
func getList(dir string) ([]string, error) {
var filelist []string
err := filepath.Walk(dir, func(path string, info os.FileInfo, err error) error {
if err != nil {
return err
}
if !info.IsDir() {
filelist = append(filelist, path)
}
return nil
})
if err != nil {
return nil, err
}
return filelist, nil
}
上面的代码中,filepath.Walk
方法会遍历指定目录下的所有文件和子目录,并将遍历到的每个文件的全路径加入到一个切片中返回。
2. 修改文件名
获取到文件列表后,就可以开始批量修改文件名了,这可以通过 os.Rename
来实现。
func renameFile(oldpath, newpath string) error {
err := os.Rename(oldpath, newpath)
if err != nil {
return err
}
return nil
}
上面的代码中,os.Rename
方法会将指定路径的文件重命名为指定的新路径。
3. 完整示例
下面是一个完整的示例,可以将指定目录下的文件名中的 _
替换为 -
:
package main
import (
"fmt"
"os"
"path/filepath"
"strings"
)
func getList(dir string) ([]string, error) {
var filelist []string
err := filepath.Walk(dir, func(path string, info os.FileInfo, err error) error {
if err != nil {
return err
}
if !info.IsDir() {
filelist = append(filelist, path)
}
return nil
})
if err != nil {
return nil, err
}
return filelist, nil
}
func renameFile(oldpath, newpath string) error {
err := os.Rename(oldpath, newpath)
if err != nil {
return err
}
return nil
}
func main() {
filelist, err := getList("./test")
if err != nil {
fmt.Println(err)
return
}
for _, filepath := range filelist {
newpath := strings.Replace(filepath, "_", "-", -1)
err := renameFile(filepath, newpath)
if err != nil {
fmt.Println(err)
}
}
}
上面的代码中,首先通过 getList
方法获取指定目录下的文件列表,然后使用 strings.Replace
方法将每个文件名中的 _
替换为 -
,最后使用 renameFile
方法重命名文件。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Go 如何批量修改文件名 - Python技术站