Cambiar una palabra en muchos archivos
Written by Gnuget on 2008.07.04
Muchas veces necesitamos cambiar un path o palabra, o nombre en muchos archivos de algún proyecto, y siempre suele ser engorroso andar abriendo archivo por archivo buscando la palabra y cambiándola.
Por eso he creado este pequeño script en bash que sirve para cambiar todas las concurrencias por otra palabra apartir de donde ejecutemos (incluidos los archivos que están en subcarpetas) el script:
#
#
#
for i in $(find . | grep -v svn );
do
if test -f $i
then
sed s/word1/word2/g $i > $i.tmp && mv $i.tmp $i
fi
done
Solo necesitamos cambiar word1 por la palabra a buscar y word2 por la palabra que queremos que este en su lugar.
Y es todo.
UPDATE: Cortesía de Gunnar, una forma mas fácil de hacer lo mismo:
find . |grep -v svn |xargs perl -p -i -e 's/word1/word2/g'

Coff! coff! en Visual Studio hay una opcion que se llama refactory que te arregla todo cuando se hacen cambios de este tipo
Te gano facilito:
find . |grep -v svn |xargs perl -p -i -e 's/word1/word2/g'
O mejor aún, si quieres que te genere respaldos:
find . |grep -v svn |xargs perl -p -i .bk -e 's/word1/word2/g'
Una buena razón para aprender perl.
Bueno, tampoco podríamos decir que este ejemplo es mucho mucho Perl
Es sólo jugar con la manera de invocar al intérprete. Llamar a perl con -e le indica que lo que le des como parámetro lo tome como la totalidad del programa en cuestión, y -p indica que el cuerpo del programa lo aplique sobre la entrada estándar más o menos así (simplificando un poco, claro):
while ($linea = <STDIN>) { $res = llama_al_cuerpo($linea); print $res; }
La magia en realidad está en el switch -i, que hace “In-place editing”, agregándole opcionalmente un sufijo a cada uno de los archivos originales si se lo indicas.
Me parece que se puso chida la cosa, http://garaged.blogspot.com/2008/07/que-hay-de-malo-con-la-simplicidad.html
Chale, no furulan los comentarios sin javascript
Cha, no puedo creer que no tengas activado javascript? o.O eres bien web1.0 jajajaja
Saludos garaged
Pues si lo activo, pero manualmente donde “lo necesito”, uso la exensión “no-script” de firefox, y no soy nada paranóico, realmente lo hago para que se alente menos mi maquinita, y bueno, para no cargar innecesariamente tonterías como el analytics en cada página que lo tiene.
Soy totalmente pro web 2.0, de eso no te quede duda