Gnuget
Blog de David Valdez

Top menu

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:

#!/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'

Etiquetas

programación, bash

Sobre el autor

50x50_c8b47ce5a5fe37962c6260013711baf6_25911_f838319658.jpg
Gnuget

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


Comentarios

apps/link viernes 4 de julio, 2008 @ 13:31

apps/guest-comment Belindooo

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

apps/link viernes 4 de julio, 2008 @ 14:02

apps/guest-comment 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'

apps/link viernes 4 de julio, 2008 @ 14:12

apps/guest-comment David Valdez

Una buena razón para aprender perl.

apps/link viernes 4 de julio, 2008 @ 15:39

apps/guest-comment 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.

apps/link lunes 14 de julio, 2008 @ 11:52

apps/guest-comment 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

apps/link lunes 14 de julio, 2008 @ 12:47

apps/guest-comment Gnuget

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

Saludos garaged

apps/link lunes 14 de julio, 2008 @ 12:55

apps/guest-comment 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

Escribe tu comentario