find-the-duplicate-file-in-a-directory

71 阅读1分钟
package main

import (
    "fmt"
    "io/ioutil"
    "os"
    "path/filepath"
)

// 找到文件夹中重复的文件
func findDuplicate(root string) []string {
    // 创建一个保存文件名的 map,初始值为 0
    files := make(map[string]int)
    var result []string

    // 遍历文件夹
    filepath.Walk(root, func(path string, info os.FileInfo, err error) error {
        if err != nil {
            return err
        }

        // 如果是文件夹,则不处理
        if info.IsDir() {
            return nil
        }

        // 获取文件名
        file := info.Name()

        // 文件名在 map 中计数,如果计数为 2,说明是重复文件
        files[file]++
        if files[file] == 2 {
            result = append(result, file)
        }

        return nil
    })

    return result
}

func main() {
    root := "./example"
    result := findDuplicate(root)
    fmt.Println(result)
}