mikrocontroller.net

Forum: PC-Programmierung Fortschrittsanzeige mit find?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Alexander ʕ. (de_vmni)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin,

ich habe auf einem Linux Rechner ein Script um ein lokales Verzeichnis 
mit rsync mit einem Server zu syncronisieren.

Ich habe mit dem parameter "-progress" eine Anzegie über die aktuelle 
Datei, die Geschwindigkeit, die Zeit die gebraucht wurde für die Datei 
und eine fortlaufende Nummer mit der Gesamtanzahl aller Dateien.

Die Ausgabe sieht so aus:
Pfad          
Bytes       1.00 MB/s     0:00:00 (xfr#98, to-chk=5/126)

Die Fortlaufende Nummer wird so ausgegeben:

to-chk=5/126

Ich möchte gerne mit einer Pipe, die Ausgabe von rsync umleiten und am 
Ende nur noch folgendes angezeigt bekommen:

1/126

Alle anderen Daten sollen von der Ausgabe "verschwinden".

Kann mir jemand behilflich sein wie ich das bekomme? Ich habe an find 
gedacht. Aber ich weiß nicht genau wie ich damit umgehen soll.

Ich bin über jede Hilfe dankbar!

Grüße

Autor: Gerd E. (robberknight)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alexander ʕ. schrieb:
> Ich habe an find
> gedacht. Aber ich weiß nicht genau wie ich damit umgehen soll.

find ist das komplett falsche Werkzeug dafür. Das sucht nach Dateien auf 
der Festplatte.

Schau Dir mal "sed" an, damit kannst Du mit Regular Expressions Streams 
verändern.

Autor: Jack V. (jackv)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
›find‹ ist eher zum Suchen von Dateien im Dateisystem gedacht. Eine der 
einfachsten Methoden, aus einer Ausgabe nur einen Teil auszuschneiden, 
stellt wohl ›cut‹ dar. Wenn’s etwas komplexer sein soll, könnte man auch 
›awk‹ o.Ä. nehmen, aber für den Job hier sollte cut ausreichen.

Wie man’s benutzt, steht in der mitgelieferten Anleitung, aufzurufen mit 
›man cut‹. Wenn man das „=“ als Delimiter nimmt, braucht man nur noch 
das „)“ mit etwa ›sed‹ wegzumachen, und es dürfte dem Gewünschten 
entsprechen.

: Bearbeitet durch User
Autor: olibert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Find hilft dir da nicht weiter:
Mit einer Regex in sed oder Perl ist das einfach zu machen.

Autor: Gerd E. (robberknight)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jack V. schrieb:
> Wie man’s benutzt, steht in der mitgelieferten Anleitung, aufzurufen mit
> ›man cut‹. Wenn man das „=“ als Delimiter nimmt,

Bei der Variante muss man aufpassen mit Dateinamen die ein "=" 
enthalten. Die würden das cut dann durcheinanderbringen.

Ich denke daher sed mit einer Regex ist die bessere Lösung, da kann man 
spezifischer filtern.

Autor: Jack V. (jackv)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In der betreffenden Zeile ist doch gar kein Dateiname enthalten, und das 
Ausgabeformat ist vorhersehbar/statisch?

Aber ja, natürlich gibt’s nahezu unendlich viele Möglichkeiten, die 
gewünschten Infos „freizustellen“. Die Möglichkeit mit dem ›cut‹ fand 
ich hier am einfachsten, gerade auch für ’nen Einsteiger. Bevor er das 
mit ›sed‹ hinbekommt, müsste er erstmal viel lesen. Zumindest ich sehe 
erstmal mit meinen sed-Kenntnissen keine einfache Möglichkeit, den Job 
zu erledigen (wobei sich diese Kenntnisse bei mir zugegebenermaßen auch 
im Rahmen von „finden und ersetzen“ halten).

Autor: Gerd E. (robberknight)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jack V. schrieb:
> In der betreffenden Zeile ist doch gar kein Dateiname enthalten, und das
> Ausgabeformat ist vorhersehbar/statisch?

guter Einwand. Man könnte zuerst mit einem grep die Zeilen mit dem 
"to-chk="  rausfiltern und danach dann das cut verwenden.

Autor: foobar (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du dir mal die --out-format Option angeschaut?

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.

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