重命名非空文件夹

时间:2016-04-16 00:13:06

标签: go

我尝试使用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
}

1 个答案:

答案 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
}