Emacs: Reemplazar texto en múltiples ficheros

2021-07-19

Índice

  1. Selección de ficheros
  2. Reemplazando
  3. Referencia:

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 tip de como reemplazar texto en múltiples ficheros, así que este articulo es básicamente un corta/pega de ese articulo, todo el mórito 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.

img

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

img

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

img

% 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.

img

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 !.

img

img

img

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

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

Referencia:

Ingrese la dirección de su instancia