2016-04-16 11 views
0

空でないフォルダの名前を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 
} 
+3

あなたが移動しているディレクトリが空でないためではなく、このディレクトリを移動したい空でないディレクトリがありますので、Goは文句かもしれないように聞こえます。 – user2357112

+0

@ user2357112はい、エラーはかなり簡単です。それは私が求めているものではありません。 – Bun

+1

途中にあるディレクトリで何をしたいですか?内容をマージしますか?それとその中のすべてを削除しますか? – user2357112

答えて

1

printDirの機能でif err != nil { log.Fatal(err) }を取り除いて固定しました。プログラムを実行するたびに、フォルダの1つが既に名前が変更されているため、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 
} 
関連する問題