Anzeige:
Ergebnis 1 bis 9 von 9

Thema: Doppelte Files orten ?

  1. #1
    Registrierter Benutzer
    Registriert seit
    17.09.2004
    Beiträge
    2

    Doppelte Files orten ?

    Hallo zusammen,

    hat jemand von euch ein Shell Script mit dem man doppelte Files in auf dem System lokalisieren kann.
    Das auch rücksicht auf größe oder Erstellungsdatum nimmt.

    Zur zeit mache ich es einfach per find und geha die Liste per Hand durch. Aber die Datenmenge ist jetzt schon einfach zu viel.

    Besten Dank für einen Tipp

    Christian

  2. #2
    Registrierter Benutzer
    Registriert seit
    15.05.2001
    Beiträge
    88
    Zitat Zitat von schani
    Hallo zusammen,

    hat jemand von euch ein Shell Script mit dem man doppelte Files in auf dem System lokalisieren kann.
    Das auch rücksicht auf größe oder Erstellungsdatum nimmt.

    Zur zeit mache ich es einfach per find und geha die Liste per Hand durch. Aber die Datenmenge ist jetzt schon einfach zu viel.

    Besten Dank für einen Tipp

    Christian

    Wenn Du weisst wonach du suchst, kannst Du z.B.
    Code:
    locate unscharfer_filename| xargs ls -l |grep 'genauer_filename'
    machen.

    Naja, aber bei locate auf alle Faelle vorher
    checken ob die Dateien auch da sind, falls mal die
    locatedb veraltet ist.
    ;)

  3. #3
    Registrierter Benutzer
    Registriert seit
    20.07.2003
    Beiträge
    147
    Ich würde von allen Datein die md5 Summe berechnen lassen (da das sehr lange dauern würde, solltest du vielleicht nur die ersten xxxx Zeichen verwenden) und diese - mit dem Dateinamen - in einer Datei ablegen. Wenn diese Liste erst einmal sortiert ist, sollten sich Duplikate leicht finden lassen.

    mfg
    c.

  4. #4
    Registrierter Benutzer
    Registriert seit
    25.10.2004
    Beiträge
    819
    Code:
    find /start/pfad -type f -printf "%20s %p\n" | sort -n | uniq -w20 -D | cut -b22- | xargs -d '\n' md5sum | sort | uniq -w32 --all-repeated=separate
    Was es macht:
    1. Dateien mit Größe auflisten. Das Dateigrößenfeld ist 20 Zeichen lang
    2. Liste numerisch sortieren -> gleiche Größen kommen zusammen
    3. Felder mit gleicher Größe ausgeben (nur die ersten 20 Zeichen berücksichtigen, der Rest ist ja der Dateiname, der anders sein wird)
    4. Die Größenangabe und das Leerzeichen (ersten 21 Zeichen) wegschneiden -> nur Dateinamen bleiben übrig
    5. Über all diese potentiell identischen Dateien md5sum laufen lassen (als Trennzeichen für xargs newline nehmen)
    6. Liste sortieren
    7. Dateien mit gleicher md5 getrennt durch Leerzeile auflisten

    (Wenn du die md5 nicht sehen willst, noch ein " | cut -b35- " anhängen)
    Geändert von Joghurt (30-05-2006 um 18:46 Uhr)

  5. #5
    Registrierter Benutzer
    Registriert seit
    20.10.2005
    Ort
    MATRIX
    Beiträge
    91

    Thumbs up

    wow ... klasse antwort, ich hätte ne stunde mindestens gerätzelt, bis ich ein halbsogutes script gebastelt hätte
    Ich will ja die Welt verbessern, aber Gott gibt mir den Quellcode nicht. Aber die Grafik hat er geil hinbekommen!

  6. #6
    Registrierter Benutzer
    Registriert seit
    25.10.2004
    Beiträge
    819

    Smile

    Danke für die Blumen. Übung macht den Meister

  7. #7
    Registrierter Benutzer Avatar von Romanday
    Registriert seit
    03.02.2004
    Beiträge
    829
    Zitat Zitat von Mehlwurm
    wow ... klasse antwort, ich hätte ne stunde mindestens gerätzelt, bis ich ein halbsogutes script gebastelt hätte
    Wahrscheinlich länger.
    Abriss, bzw. die Sprengung des World Trade Centers
    WDR Dokumentation
    Doku + DT Untertitel
    Weitere Infos - Terrorstorm

  8. #8
    Registrierter Benutzer
    Registriert seit
    17.09.2004
    Beiträge
    2
    Das hört sich ja Klasse an,

    ich habs gleich versucht und habe ein Problem mit den xargs.
    Die Option -d kennt mein xargs nicht.

    Mein xargs kann nur (suse 9.3) - xargs 4.1.7
    Code:
    xargs [-0prtx] [-e[eof-str]] [-i[replace-str]] [-l[max-lines]]
           [-n max-args] [-s max-chars] [-P max-procs] [--null] [--eof[=eof-str]]
           [--replace[=replace-str]] [--max-lines[=max-lines]] [--interactive]
           [--max-chars=max-chars] [--verbose] [--exit] [--max-procs=max-procs]
           [--max-args=max-args] [--no-run-if-empty] [--version] [--help]
           [command [initial-arguments]]
    finde aber nichts passendes das den weiteren Befehlt ausführt nach jeden \n

    Könnt ihr mir da noch helfen

    Christian
    Geändert von schani (31-05-2006 um 16:33 Uhr)

  9. #9
    Registrierter Benutzer
    Registriert seit
    25.10.2004
    Beiträge
    819
    Dann wandle vorher noch \n in \0 um und nutze xargs' -0 option:
    Code:
    find /pfad -type f -printf "%20s %p\n" | sort -n | uniq -w20 -D | cut -b22- | tr '\n' '\0' | xargs -0 md5sum | sort | uniq -w32 --all-repeated=separate

Lesezeichen

Berechtigungen

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