www.mikrocontroller.net

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


Autor: Schokobirne (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Schokobirne (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.