PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Doppelte Dateien



Fußhupe
25.07.04, 15:28
Hallo zusammen,

gibt es ein/en Befehl/Programm, der/das doppelte Dateien sucht und auflistet?

Ich meine nicht Dateien mit gleichem Dateinamen, sondern Dateien mit gleichem Inhalt. Die SuFu hat leider nichts gebracht.

Danke im Voraus.


Gruß
Fußhupe

IT-Low
25.07.04, 15:34
Hi,

hier gabs das mal als Aufgabe zu lösen:

http://www.tu-chemnitz.de/linux/tag/2004/service/progwett-loesungen/loesungen.html

Fußhupe
25.07.04, 17:01
Danke. Genau das habe ich gesucht.


Gruß
Fußhupe

Fußhupe
01.09.04, 18:42
Wie kann ich dem Script Leerzeichen beibringen?

Diese drei Varianten habe ich ausprobiert, sie funktionieren nicht.

BASE=/home/alex/Eigene Bilder

BASE=/home/alex/Eigene\ Bilder

BASE=/home/alex/Eigene%20Bilder

:(

Weiss jemand Rat. Danke im Voraus.


Gruß
Fußhupe

BLUESCREEN3D
01.09.04, 21:18
Diese drei Varianten habe ich ausprobiert, sie funktionieren nicht.
BASE=/home/alex/Eigene Bilder
BASE=/home/alex/Eigene\ Bilder
BASE=/home/alex/Eigene%20Bilder
das erste kann nicht gehen, weil es aufgeteilt ist in zwei hälften
das zweite sollte eigentlich gehen
das dritte is encodiert für urls und hat in der shell nichts zu suchen

probiers mal so:
BASE="/home/alex/Eigene Bilder"

und das zweite geht vllt. so:
BASE=/home/alex/Eigene\\ Bilder
wäre aber komisch

nobody0
01.09.04, 21:26
In Anführungszeichen setzen sollte funktionieren.

nobody0
02.09.04, 00:41
Es gibt dafür auch fdupes (siehe google):

fdupes -r -n -S ./ 2>&1 | tee /tmp/fdupes.out

Man muß aber beachten, dass die Programme/Skripte meist nicht optimal implementiert sind, also zuerst nach Größe eine Liste erstellen, nur von potentiellen Kandidaten md5sum berechnen usw.. Einige GB und hunderttausende Dateien damit zu überprüfen dauert deshalb meist unnötig lange.
Und eigentlich wäre es sicherlich optimal in einem ersten Durchlauf (vor direktem Vergleich der Dateien) nur die md5sum der ersten 1 kB zu berechnen, weil bei einer Übereinstimmung zu 99 % auch die Datei-Reste übereinstimmen, aber soweit ich weiß, gibt's das (noch) nicht.

Fußhupe
02.09.04, 17:39
Danke für Eure Hilfe, funktioniert leider nicht bei mir.

BASE="/home/alex/Eigene Bilder"
find: /home/alex/Eigene: Datei oder Verzeichnis nicht gefunden
find: Bilder: Datei oder Verzeichnis nicht gefunden

BASE=/home/alex/Eigene\\ Bilder
line 3: Bilder: command not found

Was mache ich falsch? Vielleicht habt Ihr noch 'ne Idee.


Gruß
Fußhupe

BLUESCREEN3D
03.09.04, 13:29
benutzt du dieses script?
http://www.tu-chemnitz.de/linux/tag/2004/service/progwett-loesungen/gleiche-dateien/loesung/goppold.sh.txt

wenn ja geht vllt. folgendes:

in zeile 5:

$BASE durch "$BASE" ersetzen

und dann ganz oben den pfad mit anführungsstrichen angeben

Fußhupe
03.09.04, 13:53
benutzt du dieses script?
http://www.tu-chemnitz.de/linux/tag/2004/service/progwett-loesungen/gleiche-dateien/loesung/goppold.sh.txt

wenn ja geht vllt. folgendes:

in zeile 5:

$BASE durch "$BASE" ersetzen

und dann ganz oben den pfad mit anführungsstrichen angeben

Ja genau, ich benutze dieses Script.

$BASE durch "$BASE" ersetzen habe ich mittlerweile auch rausgefunden. Das nächste Problem ist nur, dass in der Ergenistextdatei (mygleiche.alle.txt) die Pfade der doppelt vorkommenen Dateien am Leerzeichen abgeschnitten werden, so z.B.

/home/alex/Eigene
/home/alex/Eigene

Kann man das noch irgendwie ändern?


Gruß
Fußhupe

BLUESCREEN3D
03.09.04, 14:55
Ja genau, ich benutze dieses Script.

$BASE durch "$BASE" ersetzen habe ich mittlerweile auch rausgefunden. Das nächste Problem ist nur, dass in der Ergenistextdatei (mygleiche.alle.txt) die Pfade der doppelt vorkommenen Dateien am Leerzeichen abgeschnitten werden, so z.B.

/home/alex/Eigene
/home/alex/Eigene

Kann man das noch irgendwie ändern?
das script benutzt das leerzeichen als trennzeichen -.-

einfach lösung:

ln -s "/home/alex/Eigene Dateien" /home/alex/Eigene_Dateien_link_fuer_script

und danach dann /home/alex/Eigene_Dateien_link_fuer_script als pfad benutzen

Fußhupe
03.09.04, 16:35
Geht nicht. Links werden nicht verfolgt. Steht auch in der Aufgabe.

Ich bastel mir gerade was neues.


Gruß
Fußhupe

Fußhupe
03.09.04, 17:16
Mein erstes kleines Ergebnis. Nicht so komfortabel, aber für den Anfang reicht es.

md5sum /home/alex/Urlaub/* | sort | uniq -w 32 -i -D > /home/alex/liste.txt

Kann md5sum auch rekursiv? md5sum -r geht nämlich nicht.


Gruß
Fußhupe

canis_lupus
03.09.04, 19:26
find /home/alex/Urlaub/ -type f -exec md5sum {} \; | .....(der Rest)

Fußhupe
05.09.04, 19:41
Ups. Hab gar nicht mitbekommen, dass hier nochmal geantwortet wurde.

@canis_lupus: Danke. Funktioniert. Würde es Dir was ausmachen, die Zeile kurz zu erklären? Dann verstehe ich auch, was ich gemacht habe und kann das dann ein anderes mal selbst anwenden. Man will ja lernen :).

Danke.


Gruß
Alexander

canis_lupus
05.09.04, 19:58
find /home/alex/Urlaub/ -type f -exec md5sum {} \;

find............................(tut suchen tun :D )
/home/alex/Urlaub/....(ab diesem Verzeichnis und darunter)
-type f.......................(nur Dateien; Verzeich. führen bei md5sum zu Fehlermeldungen)
-exec.........................(führe folgenden Befehl mit jedem Treffer aus)
md5sum.....................(der Befehl, welcher mit jedem Treffer ausgeführt wird)
{}..............................(wird immer gegen Treffer ersetzt (kann mehrfach vorkommen))
\;...............................(beendet -exec und muss immer genauso vorhanden sein!)

Umbennen wäre zum Beispiel: -exec mv {} {}.backup \;

Fußhupe
05.09.04, 20:15
Super. Danke. Habs verstanden.


Gruß
Fußhupe