Hallo,
fslint
findet leider auch alle Duplikate innerhalb der Ordner – und die sind zahlreich. Wie kann ich die vom Suchergebnis ausschließen?
Anmeldungsdatum: Beiträge: 2726 |
Hallo,
|
||
![]() Anmeldungsdatum: Beiträge: Zähle... |
Kann es gerade nicht selber testen, aber versuche mal:
Mit den Optionen (eventuell anpassen): -s --report-identical-files Report when two files are the same. -r --recursive Recursively compare any subdirectories found. -q --brief Output only whether files differ. |
||
![]() Anmeldungsdatum: Beiträge: Zähle... |
Sorry, das macht natürlich nicht, was gewünscht ist. Versuche mal das:
|
||
![]() Anmeldungsdatum: Beiträge: Zähle... |
Doch, das erste geht auch. |
||
Projektleitung
Anmeldungsdatum: Beiträge: 12527 |
Was soll denn das Kriterium für Duplikat sein? Wir hatten hier schon öfters solche Fragen. Wenn es über den Inhalt geht, kann man gut einen Hash wie SHA256 nehmen. Ganz einfach geht:
Damit hast Du aber noch nicht die doppelten innerhalb eines Verzeichnisses ausgenommen. Dann wird es noch aufwändiger. Aber man erkennt die ja recht einfach optisch. |
||
(Themenstarter)
Anmeldungsdatum: Beiträge: 2726 |
Danke themroc für die Tipps. Das 2. Beispiel wird nicht funktionieren, da es nur gleiche Dateinamen findet. Ich habe sowohl Dateien mit gleichem Inhalt und verschiedenen Namen als auch Dateien mit gleichem Namen, aber unterschiedlichem Inhalt. Für meine Suche kommt es auf die (Un-)Gleichheit des Inhalts an. Beim 1. Beispiel bin ich mir auch nicht so sicher, denn Ich habe aber jetzt eine Zusatzfunktion in FSlint entdeckt, welche mein Problem quasi löst. Über "Auswahl mit Platzhalter" kann ich alle Ergebniszeilen mit z.B. Pfad von Ordner 1 selektiv markieren und die dann gezielt löschen. Einziger Pferdefuß: bei einer sehr langen Ergebnisliste ist es mühsam, die so markierten Zeilen zu finden, um zu kontrollieren, ob auch die richtigen Zeilen markiert wurden. Schade, dass man FSlint so eine eingeschränkte Suche nicht direkt so vorgeben kann. Ansonsten hilft noch die umständliche Nachbearbeitung, die ich hier nachgefragt habe. |
||
(Themenstarter)
Anmeldungsdatum: Beiträge: 2726 |
Genau das gleiche, welches FSlint verwendet, die Inhaltsgleichheit.
Genau, und damit bin ich nicht weiter, wie mit FSlint, dennoch ein interessanter Ansatz, danke dafür. FSlint ist aber noch genauer, denn soweit ich weiß, prüft es für Dateien mit gleichem Hash dann anschließend noch den Inhalt auf exakte Gleichheit.
Genau!
Solange es sich dabei nur um wenige zig Ergebniszeilen handelt, schon, doch bei mir sind es tausende mit nur sehr wenigen Treffern für den 1. Ordner. |
||
Projektleitung
Anmeldungsdatum: Beiträge: 12527 |
OK.
Das dürfte bei SHA256 ziemlich überflüssig sein.
Dann würde ich das so machen:
Als Datenstruktur würde ich eine Hashtabelle benutzen mit SHA256 als Schlüssel und einer Liste von Tupeln aus (Dateiname, Größe). Ich würde das in Ruby implementieren, weil die Shell dann doch ein bisschen eklig ist. Shellskript mit |
||
![]() Anmeldungsdatum: Beiträge: 1543 |
Das habe ich noch gefunden:
|
||
![]() Anmeldungsdatum: Beiträge: 1543 |
Besser so:
|