我尝试使用os.Rename()
重命名非空文件夹。这是错误:
directory not empty
。有没有强制重命名非空文件夹?
package main
import (
"path/filepath"
"log"
"os"
"strings"
)
var PATH = "dir/dir/"
/
func main() {
err := filepath.Walk(PATH, printDir)
if err != nil {
log.Fatal(err)
}
}
func printDir(path string, info os.FileInfo, err error) error {
if err != nil {
log.Fatal(err)
}
if info.IsDir() {
arr := strings.Split(info.Name(), " ")
if len(arr) > 1 {
err := os.Rename(PATH + info.Name(), arr[0] + "_" + arr[1])
if err != nil {
log.Fatal(err)
}
}
}
return nil
}
答案 0 :(得分:1)
我通过在if err != nil { log.Fatal(err) }
函数中取出printDir
来修复它。它以1个错误代码终止,因为每次运行程序时都会重命名其中一个文件夹。
// Rename the folder name to format first_last.
// Then delete all files in each folder that are not jpg extension.
package main
import (
"path/filepath"
"log"
"os"
"strings"
"fmt"
)
var PATH = "dir/dir/dir"
func main() {
err := filepath.Walk(PATH, printDir)
if err != nil {
log.Fatal(err)
}
}
func printDir(path string, info os.FileInfo, err error) error {
if info.IsDir() {
if !strings.Contains(info.Name(), "_") && len(strings.Split(info.Name(), " ")) > 1 {
os.Rename(PATH + info.Name(), PATH + strings.Replace(info.Name(), " ", "_", -1))
}
}
if !info.IsDir() {
fmt.Println(info.Name())
}
return nil
}