diff --git a/main.go b/main.go index 2f622b1..0b6aa64 100644 --- a/main.go +++ b/main.go @@ -30,7 +30,7 @@ func main() { } - if *target != "" && *recursive == false && *bits == 224 { + if *target != "" && *recursive == false && *bits == 224 { files, err := filepath.Glob(*target) if err != nil { log.Fatal(err) @@ -51,7 +51,7 @@ func main() { if *target != "" && *recursive == true && *bits == 224 { - err := filepath.Walk(".", + err := filepath.Walk(filepath.Dir(*target), func(path string, info os.FileInfo, err error) error { if err != nil { return err @@ -59,16 +59,24 @@ func main() { file, err := os.Stat(path) if file.IsDir() { } else { - h := sha3.New224() - f, err := os.Open(path) - if err != nil { - log.Fatal(err) - } - if _, err := io.Copy(h, f); err != nil { - log.Fatal(err) - } + filename := filepath.Base(path) + pattern := filepath.Base(*target) + matched, err := filepath.Match(pattern, filename) + if err != nil { + fmt.Println(err) + } + if matched { + h := sha3.New224() + f, err := os.Open(path) + if err != nil { + log.Fatal(err) + } + if _, err := io.Copy(h, f); err != nil { + log.Fatal(err) + } fmt.Println(hex.EncodeToString(h.Sum(nil)), "*" + f.Name()) } + } return nil }) if err != nil { @@ -98,7 +106,7 @@ func main() { if *target != "" && *recursive == true && *bits == 256 { - err := filepath.Walk(".", + err := filepath.Walk(filepath.Dir(*target), func(path string, info os.FileInfo, err error) error { if err != nil { return err @@ -106,16 +114,24 @@ func main() { file, err := os.Stat(path) if file.IsDir() { } else { - h := sha3.New256() - f, err := os.Open(path) - if err != nil { - log.Fatal(err) - } - if _, err := io.Copy(h, f); err != nil { - log.Fatal(err) - } + filename := filepath.Base(path) + pattern := filepath.Base(*target) + matched, err := filepath.Match(pattern, filename) + if err != nil { + fmt.Println(err) + } + if matched { + h := sha3.New256() + f, err := os.Open(path) + if err != nil { + log.Fatal(err) + } + if _, err := io.Copy(h, f); err != nil { + log.Fatal(err) + } fmt.Println(hex.EncodeToString(h.Sum(nil)), "*" + f.Name()) } + } return nil }) if err != nil { @@ -145,7 +161,7 @@ func main() { if *target != "" && *recursive == true && *bits == 384 { - err := filepath.Walk(".", + err := filepath.Walk(filepath.Dir(*target), func(path string, info os.FileInfo, err error) error { if err != nil { return err @@ -153,16 +169,24 @@ func main() { file, err := os.Stat(path) if file.IsDir() { } else { - h := sha3.New384() - f, err := os.Open(path) - if err != nil { - log.Fatal(err) - } - if _, err := io.Copy(h, f); err != nil { - log.Fatal(err) - } + filename := filepath.Base(path) + pattern := filepath.Base(*target) + matched, err := filepath.Match(pattern, filename) + if err != nil { + fmt.Println(err) + } + if matched { + h := sha3.New384() + f, err := os.Open(path) + if err != nil { + log.Fatal(err) + } + if _, err := io.Copy(h, f); err != nil { + log.Fatal(err) + } fmt.Println(hex.EncodeToString(h.Sum(nil)), "*" + f.Name()) } + } return nil }) if err != nil { @@ -192,7 +216,7 @@ func main() { if *target != "" && *recursive == true && *bits == 512 { - err := filepath.Walk(".", + err := filepath.Walk(filepath.Dir(*target), func(path string, info os.FileInfo, err error) error { if err != nil { return err @@ -200,16 +224,24 @@ func main() { file, err := os.Stat(path) if file.IsDir() { } else { - h := sha3.New512() - f, err := os.Open(path) - if err != nil { - log.Fatal(err) - } - if _, err := io.Copy(h, f); err != nil { - log.Fatal(err) - } + filename := filepath.Base(path) + pattern := filepath.Base(*target) + matched, err := filepath.Match(pattern, filename) + if err != nil { + fmt.Println(err) + } + if matched { + h := sha3.New512() + f, err := os.Open(path) + if err != nil { + log.Fatal(err) + } + if _, err := io.Copy(h, f); err != nil { + log.Fatal(err) + } fmt.Println(hex.EncodeToString(h.Sum(nil)), "*" + f.Name()) } + } return nil }) if err != nil {