erik s.
Erfahrenes Mitglied
Servus und guten Morgen,
ich habe ein wahrscheinlich nicht seltenes Anliegen, zu dem ich allerdings bisher nicht die Lösung gefunden habe, die ich erwartete.
In einem Webseiten-Archiv befinden sich rund 3'700 html-Dateien, welche eine Passage in sich führen, die ich gern loswerden möchte. Es handelt sich dabei lediglich um ein paar Wörter, die immer identisch sind (beispielsweise "REPLACE ME").
Ich ging bisher davon aus, dass sich das Ganze mittels eines Einzeilers lösen lässt. Jedoch schlugen alle Versuche fehl :-/
Mein erster Versuch, die Dateien "in place" zu bearbeiten
gab folgende Fehlermeldung zurück:
Das ist nur die Meldung der ersten gefundenen Datei. Die folgenden sehen ähnlich aus. Ich verstehe auch nicht, wo die Bezeichnung "sedkp4L98" als Dateiname herkommt. Zugriffsrechte sind alle okay, das Ganze spielt sich auf meinem lokalen Rechner in einem gemounteten Verzeichnis ab.
Dann habe ich versucht, die veränderten Inhalte nicht mehr "in place", sondern in eine neue Datei nach dem Muster "<Original-Dateiname>.edited" zu speichern.
und
geben mir jeweils nur den Inhalt auf der Konsole aus, erstellen die Dateien und lassen sie aber leer.
Wenn ich den Backslash vor dem Ausgabe-Oprator ">" im oberen Befehl weglasse, schreibt er alle Inhalte in die selbe Datei, nämlich in "{}.edited". Demnach scheint der find-Befehl die Ausgabeumleitung nicht mehr zum exec-Parameter dazuzuzählen.
Gibt es eine Lösung, ohne ein Skript schreiben zu müssen? Das wäre nun nicht schlimm, dafür habe ich auch mehr als genug Beispiele gefunden. Mein Ehrgeiz hat mich nur dazu verleitet, das Problem so anzugehen
Vielen Dank schon mal.
Gruß
Erik
ich habe ein wahrscheinlich nicht seltenes Anliegen, zu dem ich allerdings bisher nicht die Lösung gefunden habe, die ich erwartete.
In einem Webseiten-Archiv befinden sich rund 3'700 html-Dateien, welche eine Passage in sich führen, die ich gern loswerden möchte. Es handelt sich dabei lediglich um ein paar Wörter, die immer identisch sind (beispielsweise "REPLACE ME").
Ich ging bisher davon aus, dass sich das Ganze mittels eines Einzeilers lösen lässt. Jedoch schlugen alle Versuche fehl :-/
Mein erster Versuch, die Dateien "in place" zu bearbeiten
Code:
find . -iname "*.html" -exec sed -i 's/REPLACE ME/ /g' {} \;
Code:
sed: preserving permissions for `./sedkp4L98': Die Operation ist nicht erlaubt
Dann habe ich versucht, die veränderten Inhalte nicht mehr "in place", sondern in eine neue Datei nach dem Muster "<Original-Dateiname>.edited" zu speichern.
Code:
find . -iname "*.html" -exec sed 's/REPLACE ME/ /g' {} \> {}.edited \;
Code:
find . -iname "*.html" -exec sed 's/REPLACE ME/ /gpw {}.edited' {} \;
Wenn ich den Backslash vor dem Ausgabe-Oprator ">" im oberen Befehl weglasse, schreibt er alle Inhalte in die selbe Datei, nämlich in "{}.edited". Demnach scheint der find-Befehl die Ausgabeumleitung nicht mehr zum exec-Parameter dazuzuzählen.
Gibt es eine Lösung, ohne ein Skript schreiben zu müssen? Das wäre nun nicht schlimm, dafür habe ich auch mehr als genug Beispiele gefunden. Mein Ehrgeiz hat mich nur dazu verleitet, das Problem so anzugehen
Vielen Dank schon mal.
Gruß
Erik