go批量替换文件名
dio 2020-07-01 go
# 批量替换文件名
package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"log"
"os"
"strings"
)
func main() {
path := "D:\\mp4"
listFiles(path)
}
func listFiles(dirname string) {
fileInfos, err := ioutil.ReadDir(dirname)
if err != nil {
log.Fatal(err)
}
//处理map
nameJson := `{
"golan-study.mp4":"go语言学习.mp4",
}`
map1 := make(map[string]string, 300)
json.Unmarshal([]byte(nameJson), &map1)
//fmt.Println(map1)
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))
//}
rname, _ := map1[f.Name()]
if rname != "" {
err := os.Rename(filename, dirname+"\\"+strings.Replace(f.Name(), f.Name(), rname, -1))
//break
//fmt.Println(filename)
//fmt.Println(f.Name())
//fmt.Println(rname)
if err != nil {
fmt.Println(err)
}
}
if f.IsDir() { //判断是否是文件夹 如果是文件夹则继续递归调用
listFiles(filename)
}
}
}
func listFiles2(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) //打印文件地址
break
if f.IsDir() { //判断是否是文件夹 如果是文件夹则继续递归调用
listFiles(filename)
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71