Anzeige:
Ergebnis 1 bis 4 von 4

Thema: Doppelte Dateien löschen, wenn in einem anderen Verzeichnis vorhanden.

  1. #1
    Registrierter Benutzer
    Registriert seit
    Oct 2008
    Beiträge
    39

    Doppelte Dateien löschen, wenn in einem anderen Verzeichnis vorhanden.

    Ausgangssituation
    VERZEICHNIS-1 enthält alle wesentlichen Dateien
    VERZEICHNIS-2 enthält viele Duplikate (auch unter anderem Namen) und einige Dateien, die nicht unter VERZEICHNIS-1 gespeichert sind.


    Das möchte ich erreichen:
    Jede Datei unterhalb VERZEICHNIS-2, die irgendwo unterhalb VERZEICHNIS-1 zu finden ist soll gelöscht werden.

    Duplikate in VERZEICHNIS-2 sollen gelöscht werden
    Alle anderen Dateien sollen dort erhalten bleiben.

    Doppelte Dateien unter VERZEICHNIS-1 sollen auf keinen Fall gelöscht werden. (Hier ist mein Problem. Ohne diese Bedingung ist die Aufgabe leicht.)

    Aktuell gehe ich diesen Weg:
    Code:
    fdupes -r  VERZEICHNIS-1/ VERZEICHNIS-2/ > doppelt.txt
    Code:
    mousepad doppelt.txt
    Ersetze alles was "VERZEICHNIS-2" nach "rm VERZEICHNIS-2"
    Ersetze alles was "VERZEICHNIS-1" nach "# VERZEICHNIS-1"

    Code:
    chmod u+x doppelt.txt
    ./doppelt.txt
    Gibt es einen einfacheren Weg irgend einem Komandozeilenprogramm mitzugeben, dass nur im VERZEICHNIS-2 gelöscht werden soll?

    fdupes, jdupes, rdfind, dupseek ...

  2. #2
    Registrierter Benutzer
    Registriert seit
    Jan 2008
    Beiträge
    2.551
    Ungetestet, 100%ig noch Fehler drin

    Code:
    rm  /tmp/wanted_hashes.txt > /dev/null 2>&1
    cd VERZEICHNIS-1
    find . -type f  | while read f;do 
        md5sum "$f" >> /tmp/wanted_hashes.txt 
    done 
    
    cd VERZEICHNIS-2
    find . -type f  | while read f; do
        akt_hash=`md5sum "$f" | awk '{print $1}'`
        grep  $akt_hash /tmp/wanted_hashes.txt && echo "$f" 
    done

    Im ersten Schritt wird eine Liste mit erwünschten Hashes in Verzeichnis-1 erzeugt.
    Im zweiten Schritt wird Verzeichnis-2 rekursiv durchsucht.
    Ist der aktuelle Hash in der Liste aus Schritt 1 vorhanden, so soll die betroffene Datei gelöscht werden.
    Zum Test habe ich statt "rm" ein "echo" verwendet.

  3. #3
    Registrierter Benutzer
    Registriert seit
    Oct 2008
    Beiträge
    39
    Danke, werde ich probieren.

    Nach dem erfolgreichen Hash-Vergleich werde ich vor dem Löschen besser noch ein diff durchführen.

  4. #4
    Registrierter Benutzer
    Registriert seit
    Dec 2003
    Ort
    Dettenhausen
    Beiträge
    22.061
    den kannst Du Dir sparen - wenn der Hash passt sind die Dateien identisch.

    ok, es gibt eine mathematische Chance - von dem her nimm halt statt md5 sha256 - aber die Chance, daß Du "der Glückliche" bist...
    Ich bin root - ich darf das.

Ähnliche Themen

  1. gvfs - was passiert mit Dateien, wenn nicht vorhanden?
    Von Linux-Djihad im Forum Linux Allgemein
    Antworten: 0
    Letzter Beitrag: 18.02.10, 20:23
  2. Wert in anderer datei suchen, wenn vorhanden löschen
    Von georgf.d im Forum Linux Allgemein
    Antworten: 5
    Letzter Beitrag: 01.07.08, 13:44
  3. Dateien in einem Verzeichnis nach einer Zeit löschen
    Von brauni im Forum Linux Allgemein
    Antworten: 10
    Letzter Beitrag: 03.11.05, 20:58
  4. Sicherheit von MD5 bzw. Doppelte Dateien löschen
    Von RS im Forum Linux Allgemein
    Antworten: 11
    Letzter Beitrag: 26.09.04, 23:42
  5. Antworten: 2
    Letzter Beitrag: 11.09.03, 19:33

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •