Se state cercando un modo semplice di trovare e sostituire stringhe in diversi file di testo (php script, bash script, perl script o semplicemente testi) utilizzando un solo comando, quello che segue potrebbe essere il più semplice:
find . -name ‘[PATTERN]’ |xargs perl -pi -e ‘s/[NEEDLE]/[REPLACESTR]/g’
Ad esempio se siete nella cartella dove abitualmente salvate i vostri script di avviso, che inviano mail al presentarsi di certe condizioni, e volete sostituire il vostro vecchio indirizzo email con il nuovo potete digitare
find . -name ‘*.php’ |xargs perl -pi -e ‘s/[email protected]/[email protected]/g’
e il gioco è fatto!
Si suppone ovviamente che perl sia installato sul sistema!
Vedere man find per la lista completa di opzioni di ricerca.
[aggiunta del 22/7/2014]
Ancora più semplice e più facile da trovare installato il sed:
sed -i “s/Vecchia stringa/Nuova stringa/g” *.html
Alternativa a mio avviso un filo più semplice RPL
ma gli amanti del tne-tne facciano pure…..
In effetti rpl ha molte possibilità in più ed è sicuramente più versatile, però non è presente di default sul sistema debian base, ma va installato.
Sulla maggior parte dei sistemi ho più spesso e facilmente trovato già presenti il find e il perl.
Non che sia un gran disturbo l’installazione in effetti:
apt-get install rpl -s
Reading Package Lists… Done
Building Dependency Tree… Done
The following extra packages will be installed:
python python2.3
Suggested packages:
python-doc python-tk python-profiler python2.3-doc python2.3-profiler
Recommended packages:
python2.3-iconvcodec python2.3-cjkcodecs python2.3-japanese-codecs
The following NEW packages will be installed:
python python2.3 rpl
0 upgraded, 3 newly installed, 0 to remove and 20 not upgraded.
Inst python2.3 (2.3.5-3sarge1 Debian:3.1r2/stable, Debian-Security:3.1/stable)
Inst python (2.3.5-2 Debian:3.1r2/stable)
Inst rpl (1.5.1 Debian:3.1r2/stable)
Conf python2.3 (2.3.5-3sarge1 Debian:3.1r2/stable, Debian-Security:3.1/stable)
Conf python (2.3.5-2 Debian:3.1r2/stable)
Conf rpl (1.5.1 Debian:3.1r2/stable)
Io direi che per un uso più o meno frequente di sostituzione in file, l’ottimale è certamente rpl, ma per un problemino spot si può anche considerare lo script suggerito… beh insomma basta provarli e dicidere! Facile no?
…sopratutto per chi usa debian digitare:
apt-get install rpl
è un po’ troppo complicato, meglio un find con regex e pipe e regular expression perl….
tne-tne
;))))
find . -name '*.php' | xargs perl -pi -e 's/<\?/<\?php/g' find . -name '*.php' | xargs perl -pi -e 's/<\?phpphp/<\?php/g'