Forum: PC Hard- und Software Identische Dateien löschen, grep pattern


von Schokobirne (Gast)


Lesenswert?

Das Problem: ich habe einen Haufen doppelte Dateien in zwei ähnlichen 
(aber nicht identischen) Verzeichnisbäumen.
Teilweise sind identische Daten innerhalb desselben Pfades.
Die Verzeichnisse enthalten jeweils ca. 15,000 Dateien (2 GB).

findup (http://man.cx/fslint) erzeugt ein Listing von identischen 
Dateien aus zwei Verzeichnisbäumen:
/usr/share/fslint/fslint/findup pfad1 pfad2

pfad1/datei1_1
pfad2/datei1_2

pfad1/datei2_1
pfad2/datei2_2

Ich möchte erstmal alle Dateien in pfad2 löschen, die auch in pfad1 
vorkommen.
Am Ende soll nur noch pfad1 existieren, mit allen 'einzigartigen' 
Dateien.

Dazu könnte man alle Zeilen heraussuchen, die auf eine Zeile mit pfad1 
folgen, die auf eine Leerzeile folgt. Dazu ist grep (http://man.cx/grep) 
wohl das Mittel der Wahl.
Anschliessend diese Dateien löschen.

Fragen:
Ist das Vorgehen nachvollziehbar - gibt es einen besseren Weg?
Wie lautet der reguläre Ausdruck? Irgendwas mit $.+pfad1.+\n.+pfad2

von Chris (Gast)


Lesenswert?

> Wie lautet der reguläre Ausdruck? Irgendwas mit $.+pfad1.+\n.+pfad2

Nein, das geht so leider nicht. grep wendet den regulären Ausdruck 
zeilenweise an, du kannst deswegen nicht mehrere Zeilen auf einmal 
matchen.

Ich würde einfach grep 'pfad2' machen. Die Leerzeilen und die Zeilen, 
die Pfad1 enthalten, werden damit ignoriert, und alle Zeilen die Pfad2 
enthalten werden ausgegeben.

Dann könnte der Befehl z.B. so aussehen:
grep -e "regex" "dateiliste.txt" | xargs -d '\n' rm

Um zu sehen, was gelöscht werden würde, kannst du das letzte "rm" z.B. 
durch "echo" ersetzen.

von Schokobirne (Gast)


Lesenswert?

Wenn das wirklich nur zeilenweise klappt, muss ich einen anderen Weg 
finden.
Wenn ich jede gefundene Datei aus pfad2 lösche, kann es ja auch sein, 
dass diese Datei nur doppelt in pfad2 liegt, aber gar nicht in pfad1.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.