Moin,
* Harry Rüter
Thorsten Haude wrote:
* Harry Rüter
[02-02-17 17:13]: Jede Datei mit einer bestimmten Endung (zb html) soll mit sed "behandelt" werden. find verzeichnis -name '*.html' -exec sed sedkrams {} \; Ja, aber der Parameter nach dem -name soll ja variabel als Kommandozeilenparameter übergeben werden, deshalb wird er ja beim Aufruf des scripts mit "*.xyz" gequotet übergeben.
Das ist das erste Problem: wie bekomme ich *.xyz an die Stelle hinter -name ? Ach ja, habe ich übersehen. Tja, dann mußt Du dem Skript eben einen Parameter übergeben: find verzeichnis -name '$1' -exec sed sedkrams {} \; Vielleicht auch "$1" oder \'$1\'. Spiel mal ein wenig 'rum, um die richtige Kombination zu finden.
sed soll eine Textersetzung machen und die Ausgabe auf eine temporäre Datei umleiten.
Nachdem sed fertig ist, wird die ursprüngliche Datei gelöscht, die temporäre Datei erhält den Namen der ursprünglichen Datei. Ist das wirklich nötig? Kann sed(1) nicht die Datei direkt ändern? Meines Wissens schreibt sed auf die Standardausgabe, sonst würde ichs nicht so probieren. Kann sein. Ich würd's überhaupt mit Perl machen.
Kann ich denn nach dem exec überhaupt mehrere Befehle sequentiell ausführen ? Man müßte mehrere -execs hintereinander benutzen können. Die sind aber normalerweise und-verknüpft.
Wie sieht denn die Ersetzung des gefundenen Dateinamens überhaupt aus ? Ist das etwa dieses {} ? Jepp.
Thorsten -- Wasn't the storming of the Bastille an act of terrorism? Probably. Now it's a holiday. - umarsyed