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

相关推荐
じ☆ve 清风°1 小时前
JavaScript 原型与原型链:深入理解 __proto__ 和 prototype 的由来与关系
开发语言·javascript·原型模式
_r0bin_6 小时前
前端面试准备-7
开发语言·前端·javascript·fetch·跨域·class
zhang98800006 小时前
JavaScript 核心原理深度解析-不停留于表面的VUE等的使用!
开发语言·javascript·vue.js
恸流失6 小时前
DJango项目
后端·python·django
Fanxt_Ja8 小时前
【JVM】三色标记法原理
java·开发语言·jvm·算法
蓝婷儿8 小时前
6个月Python学习计划 Day 15 - 函数式编程、高阶函数、生成器/迭代器
开发语言·python·学习
love530love8 小时前
【笔记】在 MSYS2(MINGW64)中正确安装 Rust
运维·开发语言·人工智能·windows·笔记·python·rust
Mr Aokey9 小时前
Spring MVC参数绑定终极手册:单&多参/对象/集合/JSON/文件上传精讲
java·后端·spring
slandarer9 小时前
MATLAB | 绘图复刻(十九)| 轻松拿捏 Nature Communications 绘图
开发语言·matlab
狐凄9 小时前
Python实例题:Python计算二元二次方程组
开发语言·python