用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文件
go build -o 删除重复文件.exe main.go
使用
只需将删除重复文件.exe
放到想要删掉重复文件的目录下,双击运行就会删掉重复的文件了。文章来源地址https://www.toymoban.com/news/detail-815052.html
文章来源:https://www.toymoban.com/news/detail-815052.html
到了这里,关于用go语言删除重复文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!