1Danke
ERLEDIGT
JA
JA
ANTWORTEN
2
2
ZUGRIFFE
957
957
EMPFEHLEN
-
03.04.12 08:40 #1Servus 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:Code :1
find . -iname "*.html" -exec sed -i 's/REPLACE ME/ /g' {} \;
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.Code :1
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.
undCode :1
find . -iname "*.html" -exec sed 's/REPLACE ME/ /g' {} \> {}.edited \;
geben mir jeweils nur den Inhalt auf der Konsole aus, erstellen die Dateien und lassen sie aber leer.Code :1
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
-
03.04.12 09:53 #2
Hi,
Zuerst mal zu dem komsichen Dateinamen sedkp4L98.sed: preserving permissions for `./sedkp4L98': Die Operation ist nicht erlaubt.
Dies ist eine temporäre Datei, die vom sed angelegt wird. Das richtige "in-place" bearbeiten von Dateien geht meiner Meinung / meines Wissens nicht. Also liest er die Datei ein, bearbeitet sie im RAM und schreibt sie dann in eine solche Temp-Datei. Abschließend wird die Original-Datei gelöscht, und die temporäre Datei umbenannt.
Die Fehlermeldung sieht für mich nach folgendem Fall aus:
Du (UserID 1000) versuchst Dateien zu bearbeiten, die dem User 1001 gehören. Der sed erstellt die teporäre Datei und versucht diese per chown dem User 1001 zu geben. Das darf aber ein normaler User nicht, von daher wirft er diese Fehlermeldung.
2 Vorschläge:
- Du machst ein "sudo chown -R ." auf das Verzeichnis und legst dich als Besitzer fest
- Du führst den find-Befehl per sudo mit erhöhten Rechten aus
Persönlich würde ich eher zu zweiter Methode greifen. Wenn du allerdings verschiedene Besitzer da drin hast und dies so beabsichtigt ist, dann würde ich doch eher zu dem zweiten Befehl greifen, da hier die Besitzer nicht verändert werden.
Grüße,
BKÜber eine gute Bewertung freut sich jeder ;)
Bitte erledigte Threads als "Erledigt" markieren.
"Though a program be but three lines long, someday it will have to be maintained.''
-- Geoffrey James, "The Tao of Programming"
-
03.04.12 10:27 #3
Den Befehl mit sudo auszuführen wäre natürlich eine Möglichkeit gewesen, auf die ich auch selbst hätte kommen können

Funktioniert nun. Im Prinzip geht es also "nur" um die "Enteignung" bzw. "Umeignung" nach dem Umbenennen der temporären Datei, ja? Ich dachte immer, Dateien, die mir (als User) gehören und auf die ich schreibenden Zugriff habe, kann ich auch einen neuen Besitzer zuordnen. Quasi als Geschenk
Im echten Leben funktioniert das ja (meistens) auch, hehe.
Danke nochmal für die schnelle Hilfe.
Grüße
Ähnliche Themen
-
[bash]Zugriffsdatum von Dateien unter einem Verzeichnis bestimmen
Von genodeftest im Forum Linux & UnixAntworten: 2Letzter Beitrag: 19.03.12, 09:47 -
Größe mehrerer per find gefundener Dateien addieren
Von NeMeSiS1987 im Forum Linux & UnixAntworten: 3Letzter Beitrag: 19.10.09, 01:42 -
Bash: Strings in Dateien mit Regex umschreiben
Von Radhad im Forum Linux & UnixAntworten: 1Letzter Beitrag: 24.06.08, 16:06 -
bash: Zeilen von Dateien zählen
Von DarthShader im Forum Linux & UnixAntworten: 5Letzter Beitrag: 28.04.07, 03:09 -
Dateien downloaden in der bash
Von dila71 im Forum Linux & UnixAntworten: 5Letzter Beitrag: 29.12.05, 12:33




Zitieren

Login