188_7d3f4775af1ff15c44b29f1ea1a99b51_habitaclick.png

Sponsor

Places

Tagboard

mama21mama: que onda?
Rafael Bucio: Estudiamos en el kinder ¡¡¡ :'( no me recuerdas ?
Gnuget: Saludos Saludos \o/
zer0: Dejando huella, saludos
zer0: =) Saludando
Bucio: ¬¬ estuve contigo en el kinder
<h2>: cosa

Cambiar una palabra en muchos archivos

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:

#!/bin/bash
#
#
#

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:

#forma mas fácil
find . |grep -v svn |xargs perl -p -i -e 's/word1/word2/g'

Temas relacionados

{ programación, bash }

Sobre el autor

Gnuget

Programador de tiempo completo,  Con enorme gusto  por el software libre.

Comentarios

viernes 4 de julio, 2008 @ 13:31

Belindooo

Coff! coff! en Visual Studio hay una opcion que se llama refactory que te arregla todo cuando se hacen cambios de este tipo

viernes 4 de julio, 2008 @ 14:02

Gunnar

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'

viernes 4 de julio, 2008 @ 14:12

David Valdez

Una buena razón para aprender perl.

viernes 4 de julio, 2008 @ 15:39

Gunnar

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.

lunes 14 de julio, 2008 @ 11:52

garaged

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

lunes 14 de julio, 2008 @ 12:47

Gnuget

Cha, no puedo creer que no tengas activado javascript?  o.O eres bien web1.0 jajajaja

Saludos garaged

lunes 14 de julio, 2008 @ 12:55

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