Reemplazar un texto por otro en varios ficheros a la vez se puede convertir en algo tedioso, sobre todo si esos ficheros no están ubicados en el mismo directorio, o incluso puede darse el caso de que no sepamos que ficheros necesitan ser reemplazados. Para ello tenemos este pequeña sentencia que nos ayudará a hacerlo del tirón
find . -name "*.txt" -exec sed -i 's/TEXTO1/TEXTO2/g' {} \;
Este comando lo que hará es buscar todos los ficheros con extensión txt en el directorio y subdirectorios desde donde estamos lanzando el comando, y reemplazará en todos los ficheros que encuentre la palabra TEXTO1 por la palabra TEXTO2.
En el caso de que queramos cambiar cualquier fichero sin importar la extensión tan solo tenemos que sustituir -name ”*.txt” por -type f
find . -type f -exec sed -i 's/TEXTO1/TEXTO2/g' {} \;
Nunca está de más recordar que es una sentencia bastante peligrosa ya que no hay marcha atrás. Hay que estar muy seguro de lo que queremos sustituir y donde queremos sustituirlo
Tags: find, linux, reemplazar texto, sed
This entry was posted on Tuesday, September 15th, 2009 at 10:33 and is filed under Informática. You can follow any responses to this entry through the RSS 2.0 feed. RSS 2.0. You can leave a response, or trackback from your own site.