"Fix" file removal by tracking deleted files
This commit is contained in:
10
main.go
10
main.go
@@ -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)
|
||||
|
Reference in New Issue
Block a user