用go语言删除重复文件
文章目录
需求:将同级别目录(只有一层的目录,没子目录)下的重复文件删除
go
package main
import (
"crypto/sha256"
"fmt"
"io/ioutil"
"os"
)
func main() {
files := make(map[string]string)
duplicates := make(map[string]bool)
// 获取当前目录下的所有文件
fileList, err := ioutil.ReadDir(".")
if err != nil {
fmt.Println("读取目录时出错:", err)
return
}
// 遍历所有文件
for _, file := range fileList {
if !file.IsDir() {
filePath := file.Name()
content, err := ioutil.ReadFile(filePath)
if err != nil {
fmt.Println("读取文件时出错:", err)
continue
}
hash := sha256.Sum256(content)
hashString := fmt.Sprintf("%x", hash)
// 检查是否有重复文件
if existingFile, ok := files[hashString]; ok {
fmt.Printf("发现重复文件: %s 和 %s\n", filePath, existingFile)
duplicates[filePath] = true
} else {
files[hashString] = filePath
}
}
}
// 删除重复文件
for file := range duplicates {
err := os.Remove(file)
if err != nil {
fmt.Println("删除文件时出错:", err)
} else {
fmt.Println("已删除重复文件:", file)
}
}
}
打包成exe文件
bash
go build -o 删除重复文件.exe main.go
使用
只需将删除重复文件.exe
放到想要删掉重复文件的目录下,双击运行就会删掉重复的文件了。