Come disse Paolo, si desidera trovare prima i file che si desidera modificare e poi modificarli. Un'alternativa all'utilizzo di ritrovamento è quello di utilizzare GNU grep (il default su Ubuntu), ad esempio:
grep -r -l from . | xargs -0 -n 1 sed -i -e 's/from/to/g'
È inoltre possibile utilizzare ACK-grep (sudo apt-get install ACK-grep o visitare http://petdance.com/ack/), nonché, se sai che vuoi solo un certo tipo di file e vuoi ignorare le cose nelle directory di controllo della versione. ad esempio, se desideri solo i file di testo,
ack -l --print0 --text from | xargs -0 -n 1 sed -i -e 's/from/to/g'
# `from` here is an arbitrary commonly occurring keyword
alternativa all'utilizzo sed è di usare Perl in grado di elaborare più file per comando, per esempio,
grep -r -l from . | xargs perl -pi.bak -e 's/from/to/g'
Qui, perl è raccontata da modificare in posto, creando prima un file .bak.
È possibile combinare uno qualsiasi dei lati sinistro del tubo con i lati a destra, a seconda delle proprie preferenze.
fonte
2009-02-09 19:02:24
Basta lasciare questo link qui: http://stackoverflow.com/questions/102083/whats-the-best-tool-to-find-and-replace-regular-expressions-over-multiple-files –