Befehl um "xxx" aus allen Index.php´s auf dem Server löschen

Testozter0n

New Member
Guten Tag, könnte mir eventuell jemand behilflich sein?

Gibt es eventuell einen Befehl, mit dem ich alle index.php dateien auf dem server nach "xxxxx" durchsuchen kann und dann "xxxx" herauslöschen kann?

Ich habe halt in ca. 800 Dateien was drin stehen, was jetzt raus soll. Ich habe einen Debian vServer, ich hoffe mir kann jemand helfen.
 
In php sollte das einfach zu schreiben sein, indem du dir die index.php im Dateistammbaum suchen lässt, wenn du eine gefunden hast das File öffnest, und den Inhalt mit preg_replace durchschst und gegen einen Leerschritt ersetzen lässt.

Einen einzigen Befehl wird es da nicht geben. Das ist egal wo, auf der Shell oder mit PHP auf der Shell eine Abfolge von Befehlen.
 
Es gibt nicht für alles einen fertigen Befehl! :D Hier kannst Du Dir mit einem Shellskript helfen.

Willst Du "xxxxx" (5 Zeichen!) durch "xxxx" (4 Zeichen!) ersetzen oder willst Du jetzt wirklich die "xxxxx" (5 Zeichen) löschen?

Ich nehme mal an, dass Du die 5 Zeichen durch die 4 ersetzen möchtest, wenn Du komplett löschen möchtest, mußt Du den Ausdruck "s/xxxxx/xxxx/g" ersetzen durch "s/xxxxx//g".

Leg Dir folgendes Shellskript an (ich nehme jetzt mal den Namen "mod.sh" an):

Code:
TEMP=`basename $0`
TMPFILE=`mktemp -t ${TEMP}` || exit 1
cat $1|sed -e "s/xxxxx/xxxx/g" > $TMPFILE
cp $TMPFILE $1
rm $TMPFILE
Dann folgendes als root ausführen:

Code:
chmod +x mod.sh
nice find / -type f -name "index.php" -exec ./mod.sh {} \; 2> /dev/null
Das "2> /dev/null" unterdrückt nur die vielen Fehlermeldungen, die kommen würden, wenn versucht wird, z.B. Devicefiles zu "ändern". ;)

Vielleicht solltest Du Dir mal ein Buch über Unix-Shellskripting besorgen? ;)
 
Last edited by a moderator:
Oneliner:
Code:
find /path/to/docroot -type f -name \*.php -print0 | xargs -0 sed 's#oldstring#newstring#g' -i
 
Joe User, Danke für den Hinweis auf den "-i"-Switch von sed... Den hab ich vermißt, aber auf der sed-Manpage übersehen. :rolleyes:
 
Back
Top