Sie können eine Kombination von verwenden find
, xargs
und sed
:
find ./ -type f -name "*.php" | xargs sed -i 's/\<oldfunction\>/newfunction/g'
Ich habe einen Funktionsnamen, der falsch geschrieben wurde, und ich möchte ihn ändern. Die Funktion wird an vielen Stellen des Projekts aufgerufen.
Wie kann ich dies mit einem Linux-Befehl unter SUSE tun ?
Sie können eine Kombination von verwenden find
, xargs
und sed
:
find ./ -type f -name "*.php" | xargs sed -i 's/\<oldfunction\>/newfunction/g'
Eine Variante mit Perl :
find . -type f -name "*.php" -print0 | xargs -0 perl -pi.bak -e 's/oldfunction/newfunction/g'
Ein Vorteil dabei ist, dass Perl die Sicherungsdateien (mit der .bak
Erweiterung) erstellt, sodass Sie, wenn Sie es vermasseln, zurückkehren können.
(Die -print0
Option zum Suchen und die -0
Option für xargs werden nur benötigt, wenn Sie Dateien oder Verzeichnisse mit Leerzeichen enthalten.)
Dies ist genau das gleiche wie die Lösung von John T.
find ./ -type f -name "*.php" -exec sed -i 's/\<oldfunction\>/newfunction/g' {} \;
Ich pfeife normalerweise nicht zu xargs
BEARBEITEN: teurer ... per Kommentar unten.
Ergänzung zu den anderen sehr guten Vorschlägen: Machen Sie ein Backup der gesamten Site (cp -r / var / www / var / wold) und nehmen Sie die Bearbeitung dort vor. Ich persönlich würde dann die modifizierten Dateien verschieben, zum Beispiel / var / www / geändert und http: //www.sitename.tld/changed testen, um sicherzustellen, dass alle Skripte funktionieren, bevor sie live geschaltet werden.