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 ;)

  • Share/Bookmark