用go语言删除重复文件

用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放到想要删掉重复文件的目录下,双击运行就会删掉重复的文件了。

相关推荐
ooseabiscuit12 小时前
Laravel4.x:现代PHP框架的奠基之作
java·开发语言·php
Cosolar12 小时前
大模型应用开发面试 • 每日三题|Day 003|多Agent系统中的通信协议、冲突解决和一致性保障
人工智能·后端·面试
汪汪大队u12 小时前
续:从 Docker Compose 到 Kubernetes(2)—— 服务优化与排错
网络·后端·物联网·struts·容器
c1s2d3n4cs12 小时前
Qt模仿nlohmann::json进行序列化和反序列化
开发语言·qt·json
无风听海13 小时前
MapStaticAssets()深度解析:ASP.NET Core 静态资源交付的现代范式
后端·asp.net
AiTop10013 小时前
Claude Code 推出 Agent View:命令行编程正式进入“多线程并发“时代
开发语言·人工智能·ai·aigc
jf加菲猫13 小时前
第21章 Qt WebEngine
开发语言·c++·qt·ui
码农-阿杰13 小时前
深入理解 synchronized 底层实现:从 HotSpot C++ 源码看对象锁与 Monitor 机制
开发语言·c++·
2401_8322981014 小时前
AI智能体监管落地,OpenClaw率先建立行业合规标准
开发语言
geovindu14 小时前
go: Lock/Mutex Pattern
开发语言·后端·设计模式·golang·互斥锁模式