From d660ca02c1a2c5e994fb324dde5541a2e5b8e070 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BA=90=E6=96=87=E9=9B=A8?= <41315874+fumiama@users.noreply.github.com> Date: Mon, 25 Jul 2022 10:50:18 +0800 Subject: [PATCH] add ext match --- README.md | 2 ++ main.go | 28 +++++++++++++++++++++++++--- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index dea3e8f..aedc64d 100644 --- a/README.md +++ b/README.md @@ -3,9 +3,11 @@ Detect duplicated images and gather each group into a unique subfolder. ## usage ```powershell +Usage: dupimage [-adht] ext1 ext2... -a action sort -d string work directory (default "./") -t uint duplicate throttle, max is 64 (default 5) + exts matching extensions ``` diff --git a/main.go b/main.go index 0350002..1dbdb1b 100644 --- a/main.go +++ b/main.go @@ -7,6 +7,7 @@ import ( "os" "runtime" "strconv" + "strings" "sync" _ "image/gif" @@ -31,11 +32,23 @@ func main() { tht := flag.Uint("t", 5, "duplicate throttle, max is 64") dir := flag.String("d", "./", "work directory") a := flag.Bool("a", false, "action sort") + h := flag.Bool("h", false, "display help") flag.Parse() + if *h { + fmt.Println("Usage:", os.Args[0], "[-adht] ext1 ext2...") + flag.PrintDefaults() + fmt.Println(" exts\tmatching extensions") + os.Exit(0) + } throttle := *tht if throttle > 64 { panic("invalid throttle") } + exts := flag.Args() + for i, e := range exts { + exts[i] = strings.ToLower(e) + } + fmt.Println("match extension:", exts) err := os.Chdir(*dir) if err != nil { panic(err) @@ -57,11 +70,20 @@ func main() { if to > len(imgs) { to = len(imgs) } + isextinlist := func(n string) bool { + for _, e := range exts { + if strings.HasSuffix(strings.ToLower(n), e) { + return true + } + } + return false + } go func(from, to int) { for i := from; i < to; i++ { img := imgs[i] - if !img.IsDir() { - f, err := os.Open(img.Name()) + n := img.Name() + if !img.IsDir() && isextinlist(n) { + f, err := os.Open(n) if err != nil { panic(err) } @@ -75,7 +97,7 @@ func main() { } mu.Lock() chklst = append(chklst, imagecheck{ - name: img.Name(), + name: n, dh: dh, }) fmt.Print("scan: ", len(chklst), " / ", len(imgs), "\r")