In un progetto recente mi è capitato di dover modificare al volo uno stesso parametro in molteplici file di configurazione.
Più in dettaglio, avrei dovuto modificare il valore dell’elemento <data>.

La soluzione si basa su una serie di istruzioni bash.

# si ottiene il numero di occorrenze da sostituire
$ grep -r '4010' /path/file/configurazione | wc -l

# le occorrenze vengono sostituite
$ find . -maxdepth 1  -name "param*.xml"  -exec sed -i 's/4010/3010/g' {} \;

# si verifica che le occorrenze sostituite siano uguali a quelle trovate nella situazione iniziale
$ grep -r '3010' . | wc -l

Più in dettaglio, ecco la successione di operazioni che ho eseguito.

# listing file nel path
~/tmp/param$ ls
param1.xml
param2.xml
param3.xml
...

# search: quante volte occorre la stringa da sostituire?
~/tmp/param$ grep -r '4010' . | wc -l
10

# search: in quali file occorre la stringa da sostituire?
~/tmp/param$ grep -r '4010' .
./param1.xml:                <data>40100328000000</data>
./param2.xml:                <data>40100328000000</data>
./param3.xml:                <data>40100328000000</data>
...

# il find e' corretto?
~/tmp/param$ find . -maxdepth 1  -name "param*.xml"
./param1.xml
./param2.xml
./param3.xml
...

# search/replace
~/tmp/param$ find . -maxdepth 1  -name "param*.xml"  -exec sed -i 's/4010/3010/g' {} \;

# verifica: replace quante volte?
~/tmp/param$ grep -r '3010' . | wc -l
10

# verifica: replace in quali file?
~/tmp/param$ grep -r '3010' .
./param1.xml:                <data>30100328000000</data>
./param2.xml:                <data>30100328000000</data>
./param3.xml:                <data>30100328000000</data>
...
No TweetBacks yet. (Be the first to Tweet this post)
 

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Set your Twitter account name in your settings to use the TwitterBar Section.