Szenario
Angenommen, es gibt unterhalb eines Verzeichnisses diverse HTML-Dateien, in denen Flashmovies mit den Angaben width="700" und height="400" referenziert werden. Aus Gründen einer Layout-Änderung soll das Ausgabeformat der Flashmovies auf 600 Pixel in der Breite und 343 Pixel in der Höhe reduziert werden. Dieses Problem ist auf Shell-Ebene lösbar.
Kommandos
find . -name "*.html" -exec sed -i 's/width="700"/width="600"/g' {} \;
find . -name "*.html" -exec sed -i 's/height="400"/height="343"/g' {} \;
Erläuterung
Mit dem find-Kommando suchen wir unterhalb des aktuellen Arbeitsverzeichnisses (.) nach Dateien des Typs *.html. Das find-Kommando kann aber nicht nur Dateien finden, sondern bietet auch die Möglichkeit an, verschiedene Aktionen auf jeden gefundenen Verzeichniseintrag anzuwenden. Dazu gehört die Aktion -exec, die das Ausführen eines anderen Programms ermöglicht.
In unseren beiden Kommandos starten wir über -exec das Shell-Kommando sed. Dieses Kommando erlaubt das Suchen und Ersetzen von Dateiinhalten. Durch die Option -i werden Ersetzungsvorgänge in der Datei selbst durchgeführt, d.h. die Datei wird geändert. Mit 's/Suche/Ersetze/g' wird angegeben, wonach gesucht und wodurch es ersetzt werden soll. Suche wird dabei als regulärer Ausdruck interpretiert.
Die find-Aktion -exec muss mit der durch wenigstens ein Leerzeichen abgesetzten Zeichenfolge (\;) abgeschlossen werden. Das leere geschweifte Klammernpaar {} davor ist ein Platzhalter für die jeweils von find gefundenen Dateien.
