prinzipielles Vorgehen beim Editieren mehrerer Dateien
Hallo, ich möchte möglichst in einem Aufwasch in allen Dateien von tudo (Warenwirtschaft) die Schriftgrößen von 14 auf 9 Punte ändern, damit ich auch etwas lesen kann. Meine Frage ist daher eher prinzipieller Art. Die gesuchten Dateien befinden sich alle unter /opt/qttudo/dlg und haben die Endung .ui Bei allen Dateien handelt es sich um Textdateien, die u.a. folgenden Inhalt haben, den ich ändern möchte. <pointsize>14</pointsize> Wie gehe ich das ganze am besten an? Wie ich alles auf einen Schlag mit dem vi (bitte keine Diskussionen :-)) in einer geöffneten Datei erledige, ist mir klar. Das funktioniert auch. Nur, wie gehe ich das auf einen Schlag an ohne jede Datei einzeln zu öffnen? Ich möchte das ganz eben über die Shell lösen und nicht mit einem Editor mit einer GUI, auch wenn z.B. Quanta das sicherlich kann. Gruß Thomas
Thomas Rippler
Hallo,
ich möchte möglichst in einem Aufwasch in allen Dateien von tudo (Warenwirtschaft) die Schriftgrößen von 14 auf 9 Punte ändern, damit ich auch etwas lesen kann. [...] Nur, wie gehe ich das auf einen Schlag an ohne jede Datei einzeln zu öffnen? Ich möchte das ganz eben über die Shell lösen und nicht mit einem Editor mit einer GUI, auch wenn z.B. Quanta das sicherlich kann.
Das Tool deiner Wahl ist sed. -Dieter -- Dieter Kluenter | Systemberatung Tel:040.64861967 | Fax: 040.64891521 mailto: dkluenter(at)dkluenter.de http://www.avci.de
Thomas Rippler, Samstag 13 März 2004 18:23:
Hallo,
ich möchte möglichst in einem Aufwasch in allen Dateien von tudo (Warenwirtschaft) die Schriftgrößen von 14 auf 9 Punte ändern, damit ich auch etwas lesen kann. Meine Frage ist daher eher prinzipieller Art. Die gesuchten Dateien befinden sich alle unter /opt/qttudo/dlg und haben die Endung .ui Bei allen Dateien handelt es sich um Textdateien, die u.a. folgenden Inhalt haben, den ich ändern möchte. <pointsize>14</pointsize> Wie gehe ich das ganze am besten an? Wie ich alles auf einen Schlag mit dem vi (bitte keine Diskussionen :-)) in einer geöffneten Datei erledige, ist mir klar. Das funktioniert auch. Nur, wie gehe ich das auf einen Schlag an ohne jede Datei einzeln zu öffnen? Ich möchte das ganz eben über die Shell lösen und nicht mit einem Editor mit einer GUI, auch wenn z.B. Quanta das sicherlich kann.
Mit einem kleine Script (Schleife: for $FILE in $Verzeichnis do ... done) und dem Befehl sed (die Kommandozeilen-Textverarbeitung ;-) sollte das kein Problem sein (Tipp: 's /text1/text2/g' ersetzt im gesamten Dokument text1 mit text2). -- Gruß MaxX 8-) Hinweis 1: PMs an diese Adresse werden automatisch vernichtet. Hinweis 2: Bitte unbedingt beachten: http://www.suse-etikette.de.vu
Thomas Rippler wrote:
Hallo,
ich möchte möglichst in einem Aufwasch in allen Dateien von tudo (Warenwirtschaft) die Schriftgrößen von 14 auf 9 Punte ändern, damit ich auch etwas lesen kann. Meine Frage ist daher eher prinzipieller Art. Die gesuchten Dateien befinden sich alle unter /opt/qttudo/dlg und haben die Endung .ui Bei allen Dateien handelt es sich um Textdateien, die u.a. folgenden Inhalt haben, den ich ändern möchte. <pointsize>14</pointsize> Wie gehe ich das ganze am besten an? Wie ich alles auf einen Schlag mit dem vi (bitte keine Diskussionen :-)) in einer geöffneten Datei erledige, ist mir klar. Das funktioniert auch. Nur, wie gehe ich das auf einen Schlag an ohne jede Datei einzeln zu öffnen? Ich möchte das ganz eben über die Shell lösen und nicht mit einem Editor mit einer GUI, auch wenn z.B. Quanta das sicherlich kann.
Probiers mal mit: find /opt/qttudo/dlg -name "*.ui" | while read file ; do mv $file $file.old sed -e 's/[<]pointsize[>]14[<]pointsize[>]/<pointsize>9<pointsize>/g' $file.old
$file done
Diese Kommandos mußt Du einfach in der Shell (bash) eingeben. Viele Grüße, Gordon.
Hallo, Am Sonntag, 14. März 2004 08:29 schrieb Gordon Cichon:
Thomas Rippler wrote:
Hallo,
ich möchte möglichst in einem Aufwasch in allen Dateien von tudo (Warenwirtschaft) die Schriftgrößen von 14 auf 9 Punte ändern, damit ich auch etwas lesen kann. ...schnipp...
Probiers mal mit:
find /opt/qttudo/dlg -name "*.ui" | while read file ; do mv $file $file.old sed -e 's/[<]pointsize[>]14[<]pointsize[>]/<pointsize>9<pointsize>/g' $file.old
$file
done
Diese Kommandos mußt Du einfach in der Shell (bash) eingeben.
Vorsicht, das sind 4 Zeilen eines kurzen Scripts. Wenn du jede Zeile einzeln eingibst, kommt nur 'komisches Zeug' dabei raus. Tipp: alles von "sed" bis "> $file" ist eine Zeile!
Viele Grüße, Gordon.
-- MfG Rolf Masfelder EMail: rolf.masfelder@nector.de
Hallo zusammen, "sed" war die Lösung. Ich habe beim probieren zwar u.a. das eine oder andere Mal meine Dateien zerstört, aber daraus lernt man ja am besten. :-) Werde mich jetzt endlich ein wenig besser in die Shell-Programmierung einarbeiten. Vielen Dank an alle für ihre Hilfe. Gruß Thomas
participants (5)
-
Dieter Kluenter
-
Gordon Cichon
-
Matthias Houdek
-
Rolf Masfelder
-
Thomas Rippler