Wie lösche ich doppelte Dateien mit fdupes?


13

Beim Ausführen werden fdupesmehr als 30.000 doppelte Dateien gefunden. Ich muss eine Datei behalten und alle anderen Duplikate löschen (da einige von ihnen Systemdateien sind). Bitte geben Sie mir einen Befehl oder ein Skript, um dies zu tun, ohne "1 oder 2 oder alle" für jede Gruppe doppelter Dateien zu drücken.

Antworten:


21

Sie können dies tun, wenn Sie dies im Hintergrund ausführen möchten (ich habe es gerade verwendet, um 150 GB Dupes zu entfernen, die auf dem Rackspace-Blockspeicher ausgeführt werden. £ kerching !!)

fdupes -rdN dir/

r - recursive
d - preserver first file, delete other dupes
N - run silently (no prompt)

Gibt es keine Option, die in den Papierkorb verschoben wird, anstatt Dupes zu löschen?
Augustin Riedinger

1
Didfor f in $(fdupes -f .); do gvfs-trash $f; done
Augustin Riedinger

2
@AugustinRiedinger: Noch besser wäre es, fdupes -f . | xargs -rd '\n' -- gvfs-trashwenn Sie Dateinamen mit Leerzeichen und Sonderzeichen oder viele Dateien haben.
David Foerster

@DavidFoerster Möglicherweise haben Sie noch Dateinamen mit Zeilenumbrüchen, wodurch Ihr Befehl unterbrochen wird.
Ruslan

@ Ruslan: Das ist richtig, aber im Moment fdupesgibt es keine Option für nullterminierte Datensätze, daher gibt es keine bessere Option. Es ist definitiv viel besser als for f in $(fdupes ...)wenn. : -]
David Foerster

9

fdupes hat eine reichhaltige CLI:

fdupes -r ./stuff > dupes.txt

Das Löschen der Duplikate war dann so einfach wie das Überprüfen dupes.txtund Löschen der fehlerhaften Verzeichnisse. fdupesSie können auch aufgefordert werden, die Duplikate zu löschen, während Sie fortfahren.

fdupes -r /home/user > /home/user/duplicate.txt

Die Ausgabe des Befehls geht ein duplicate.txt .

fdupes vergleicht die Größe und den MD5-Hash der Dateien, um Duplikate zu finden.

Auf der fdupesManpage finden Sie detaillierte Informationen zur Verwendung.


Ich habe einen Weg gefunden. ja 1 | fdupes -rd / mnt / hda5 / midi_files
user84055


2

Ich würde diesen sichereren Weg gehen:

Erstellen Sie ein Skript und verschieben Sie die duplizierten Dateien in einen neuen Ordner. Wenn Sie in einen Ordner außerhalb des ursprünglichen Ordners verschieben, meldet fdupes die duplizierten Dateien nicht bei einem zweiten Scan und es ist sicherer, sie zu löschen.

#!/bin/bash

# Save default separator definitions
oIFS=$IFS
# define new line as a separator, filenames can have spaces
IFS=$'\n';

# For each file (f) listed as duplicated by fdupes, recursively
  for f in `fdupes -r -f .`
  do
    # Log the files I'm moving
    echo "Moving $f to folder Duplicates" >> ~/log.txt
    # Move the duplicated file, keeping the original in the original folder
    mv $f Duplicates/
  done

# restore default separator definitions
IFS=$oIFS

1

Ich benutze fslint und DupeGuru schon länger .

  • FSlint unterstützt die Auswahl durch Platzhalter und andere Bereinigungsmethoden
  • DupeGuru unterstützt Regex

Beide können> 10000 Dateien / Ordner verarbeiten

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.