Ieri mi è capitato di dover sostituire una stringa di codice PHP, presente in diversi file contenuti nella stessa directory, con un’altra stringa.
Essendo un fan della riga di comando *unix, ho deciso di utilizzare sed, non prima di una ripassatina veloce al man(uale), per ricordare la sintassi di utilizzo, che è la seguente:
sed -e "s/VECCHIASTRINGA/NUOVASTRINGA/g" *.ESTENSIONE
dove, VECCHIASTRINGA e NUOVASTRINGA penso si commentino da sole, mentre ESTENSIONE deve essere sostituita con l’estensione dei file da sostituire. Nel caso in cui la sostituzione coinvolgesse tutti i file, è possibile indicare *.* !
Grazie a questo semplice comando, tutti i file sono stati modificati velocemente e correttamente.
P.S. sicuramente qualcuno di voi si starà chiedendo “e se i file sono sparsi in sottocartelle come faccio?”. La risposta è presto detta:
find . -type f -name '*.ESTENSIONE' -exec sed -e "s/VECCHIASTRINGA/NUOVASTRINGA/g" {} \;