From 3df950f48386a308d2d4ebf08f9c70f42203223d Mon Sep 17 00:00:00 2001 From: Jan Bader Date: Sat, 21 Nov 2020 18:08:48 +0100 Subject: [PATCH] Save files to map --- main.go | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/main.go b/main.go index 2b337e9..11e0503 100644 --- a/main.go +++ b/main.go @@ -6,22 +6,54 @@ import ( "fmt" "io" "os" + "path/filepath" ) func main() { + filesMap := newFilesMap() for _, path := range os.Args[1:] { + filepath.Walk(path, func(path string, info os.FileInfo, err error) error { + filesMap.Add(path, info) + return nil + }) fmt.Println(path) } } type filesMap struct { - Files map[int]map[[32]byte]*fileEntry + Files map[int64]map[string]*fileEntry +} + +func (fm *filesMap) Add(path string, info os.FileInfo) { + fileInfo := &fileEntry{ + Path: path, + Size: info.Size(), + } + + existing := fm.Files[fileInfo.Size] + if existing == nil { + existing = map[string]*fileEntry{} + fm.Files[fileInfo.Size] = existing + existing[""] = fileInfo + return + } + + fmt.Println("Dupes: " + path) + fmt.Println(existing[""]) + fm.Files[fileInfo.Size] = nil + +} + +func newFilesMap() filesMap { + return filesMap{ + Files: map[int64]map[string]*fileEntry{}, + } } type fileEntry struct { Path string - Size int + Size int64 } func calculateHash(path string) (string, error) {