Dateien rekursiv öffnen, Zeichenfolge Suchen & Ersetzen, speichern

  • Thread starter Thread starter Deleted member 11691
  • Start date Start date
D

Deleted member 11691

Guest
Hallo,

ich habe ein kleines Problem.
Mein Webspace ist 3GB groß (bzw. die gezippte tar.gz Datei), 3GB herunterzuladen, zu entpacken, mit Notepad++ zu ersetzen, zu packen und danach wieder hochzuladen würde sehr sehr lange dauern.

Ich brauche ein Script, welches mir ALLE Dateien im Verzeichnis /users/silent-sponsoring.de/www/ öffnet, die Zeichenfolge ".ss" mit ".php" ersetzt und die Dateien speichert.

Liebe Grüße,
PCFreund
 
Code:
sed -i 's/.ss/.php/g' /users/silent-sponsoring.de/www/*

Bin mir gerade nicht sicher, ob sed das rekursiv macht. Ansonsten über find in xargs pipen.
 
Bin mir gerade nicht sicher, ob sed das rekursiv macht. Ansonsten über find in xargs pipen.
Code:
sed: couldn't edit /users/silent-sponsoring.de/www/ajaxed: not a regular file
Sieht so aus, als ob es nicht funktioniert (ajaxed ist ein Verzeichnis)
Und ich habe keine Ahnung was Du mit
Ansonsten über find in xargs pipen.
meinst :(
 
Danke, es hat jedoch nur teilweise bzw. zu viel funktioniert:
$sshconn wurde in .phpconn ersetzt, if(ssh_auth()) {... wurde in if.phph_auth()) {... ersetzt, etc.
 
Last edited by a moderator:
Neja... es hat genau das gemacht, was du in deiner Anforderung spezifiziert hast.

Ich brauche ein Script, welches mir ALLE Dateien im Verzeichnis /users/silent-sponsoring.de/www/ öffnet, die Zeichenfolge ".ss" mit ".php" ersetzt und die Dateien speichert.
 
Ja, es ersetzt zwar .ss mit .php ABER(!) es ersetzt auch $ss... mit .php und Das möchte ich ja nicht.
 
Dann darfst du nun eine für dich gescheite RegEx bauen. Den Ansatz hast du ja nun :) Eventuell reicht ja einfach noch ein Leerzeichen-Matching hinter .ss. Das müsstest dann aber auch im Replacement wieder setzen.
 
Würde es eigentlich nicht auch reichen, dass ich \.ss schreibe? (Also als Escape-Zeichen)
 
Kurz angetestet: Ja. Du solltest aber "\.ss " (mit Leerzeichen dahinter) matchen, weil er sonst auch wieder .ssh_auth ersetzen würde.
 
Funktioniert jetzt garnicht:
include('../functions/core.ss');
bleibt
include('../functions/core.ss');
soll aber
include('../functions/core.ss');
heißen :(

Ohne dass
if(ssh_auth()) {...
in
if.phph_auth()) {...
ersetzt wird...
 
Wenn du wstuermer's Leerzeichen mit uebernommen hast - kein Wunder.
Schliesslich ist dahinter kein Leerzeichen sondern ein Apostroph ;)
Du willst wahrscheinlich /\.ss([ |'|"])/ matchen, die Liste der dahinterfolgenden moeglichen Zeichen je nach Bedarf erweitern.
 
Code:
root@http1:/users/silent-sponsoring.de# find /users/silent-sponsoring.de/www/ -type f|xargs sed -i 's/\.ss([ |'|"])/.php/g'
>
Da ist ein Syntax-Fehler drin, weiß jedoch nicht wie ich ' escapen kann :rolleyes:
 
Escapen erfolgt immer mit "\"
Um ein "\"-Zeichen zu benutzen musst du es selbst escapen: "\\"
 
Ich kapiers nich :o

Also muss anstatt
Code:
root@http1:/users/silent-sponsoring.de# find /users/silent-sponsoring.de/www/ -type f|xargs sed -i 's/\.ss([ |[B]'[/B]|"])/.php/g'
ein
Code:
root@http1:/users/silent-sponsoring.de# find /users/silent-sponsoring.de/www/ -type f|xargs sed -i 's/\.ss([ |[B]\'[/B]|"])/.php/g'
her oder ein
Code:
root@http1:/users/silent-sponsoring.de# find /users/silent-sponsoring.de/www/ -type f|xargs sed -i 's/\.ss([ |[B]\\'[/B]|"])/.php/g'
oder wie?
 
Last edited by a moderator:
Back
Top