Identische Dateien löschen, grep pattern

Gast #1428377
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
Gast
> 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.
Gast
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.