"Fix" file removal by tracking deleted files

This commit is contained in:
2025-05-23 13:47:15 +02:00
parent 7946eb43c5
commit 1ef25f6420

10
main.go
View File

@@ -106,12 +106,16 @@ func main() {
}()
// Process results and remove duplicates
deletedFiles := make(map[string]bool)
for result := range groupResults {
allFiles := append([]string{result.mainFile}, result.group...)
var largestFile string
var largestSize int64
for _, f := range allFiles {
if deletedFiles[f] {
continue
}
info, err := os.Stat(f)
if err != nil {
logger.Error("Failed to get file info for %s: %v", f, err)
@@ -124,10 +128,12 @@ func main() {
}
for _, f := range allFiles {
if f != largestFile {
if f != largestFile && !deletedFiles[f] {
logger.Info("Removing duplicate: %s (keeping %s)", f, largestFile)
if err := os.Remove(f); err != nil {
logger.Error("Failed to remove file %s: %v", f, err)
} else {
deletedFiles[f] = true
}
}
}
@@ -218,7 +224,7 @@ func groupWorker(in <-chan HashResult, out chan<- GroupResult, wg *sync.WaitGrou
var group []string
for fileb, hashb := range allHashes {
if filea == fileb {
if filea == fileb || processedFiles[fileb] {
continue
}
distance, err := hasha.Distance(hashb)