Ir al contenido
  1. Publicaciones/

Emacs: Reemplazar texto en múltiples ficheros

··248 palabras·2 mins

Poco a poco sigo descubriendo cosas en el universo Emacs, normalmente cuando quiero buscar y sustituir una cadena de caracteres en uno o varias archivos utilizaba el comando sed, pero el otro día navegando por internet encontré un magnifica artículo de como reemplazar texto en múltiples ficheros, por lo que este articulo es básicamente un corta/pega, todo el merito es suyo, lo dejo por aquí como siempre para mi yo futuro y para que no se pierda.

Selección de ficheros #

Lo primero es abrir el directorio dónde están los ficheros a modificar. Lo puedes hacer con C-x d o bien con el menú en File→ Open Directory.

A continuación puedes mover el cursor sobre la lista de ficheros y marcar (m) o “desmarcar” (u) los ficheros que quieras.

Si quieres seleccionar con comodines, escribe % m y escribe un patrón, por ejemplo, para marcar todos los ficheros que acaban en html:

% m .org$

Reemplazando #

Ahora ejecuta el comando:

M-x dired-do-query-replace-regexp

En su lugar puedes utilizar la opción de menú: Operate→Query Replace in Files o simplemente pulsar Q.

Y emacs te pedirá el texto original y el que deseas poner es su lugar. Para cada ocurrencia que encuentre en cada uno de los ficheros marcados, deberás respondes si quieres reemplazar (y/n). Si quieres reemplazar todas pulsa !.

Para guardar los cambios, lo más fácil es:

Presionar "C-x s" y entonces pulsar "!" para salvar tods los buffers.

Referencia: #