🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
http://www.oschina.net/code/snippet_932763_18621 ## 将一个目录下的所有文件根据其md5值重命名 Bluven 发布于 2013年02月25日 21时, 1评/379阅 ``` package main import ( "os" "fmt" "path/filepath" "crypto/md5" "io" ) func hashFile(path string) error { file, err := os.Open(path) h := md5.New() if err != nil { return err } defer file.Close() data := make([]byte, 1024) for{ n, err := file.Read(data) if n != 0 { io.WriteString(h, string(data)) } else { break } if err != nil && err != io.EOF { panic(err) } } dir := filepath.Dir(path) hashName := fmt.Sprintf("%x", h.Sum(nil)) fmt.Println(path) os.Rename(path, filepath.Join(dir, hashName)) return nil } func visit(path string, info os.FileInfo, err error) error { if ! info.IsDir(){ hashFile(path) } return nil } func main(){ err := filepath.Walk("./sp", visit) if err != nil { fmt.Println(err) } } ``` ``` package main import ( "crypto/md5" "fmt" "io" "os" "path/filepath" ) func main() { filepath.Walk("./test", func(path string, info os.FileInfo, err error) error { if !info.IsDir() { file, err := os.Open(path) if err != nil { return err } h := md5.New() io.Copy(h, file) file.Close() dir := filepath.Dir(path) os.Rename(path, filepath.Join(dir, fmt.Sprintf("%X", h.Sum(nil)))) } return nil }) } ```