En este artículo, aprenderá a buscar y reemplazar de forma interactiva en muchos archivos con solo dos comandos, gracias a Vim.
Si bien existe una multitud de métodos para buscar y reemplazar palabras en un solo archivo, ¿qué hace cuando tiene una cadena para actualizar en varios archivos no relacionados, todos con nombres diferentes? ¡Aprovecha el poder de las herramientas de línea de comandos, por supuesto!
Primero, necesitará find
todos los archivos que desea cambiar. Encadenar lo que son efectivamente consultas de búsqueda find
solo está limitado por su imaginación.
Aquí hay un ejemplo simple que encuentra archivos de Python:
find . -name '*.py'
La -name
prueba busca un patrón, como todos los archivos que terminan en .py
. Pero find
puede hacer mucho más con otras condiciones de prueba, incluidas las -regex
pruebas. Corre find --help
para ver la multitud de opciones.
Afine aún más su búsqueda usando grep
para obtener solo los archivos que contienen la cadena que desea cambiar, como agregando:
grep -le '\'
La -l
opción le proporciona solo los nombres de archivo para todos los archivos que contienen un patrón (indicado con -e
) que coinciden con "una ballena".
También puede usar el impresionante Vim, :bufdo
que le permite ejecutar el mismo comando en varios búferes. Funciona de forma interactiva con todos estos archivos sin el tedio de abrir, guardar y cerrar cada archivo, uno a la vez.
Conectemos sus potentes resultados find
+ grep
a Vim con:
vim `find . -name '*.py' \ -exec grep -le '\' {} \;`
El uso de la expansión de tilde invertido para pasar nuestra búsqueda a Vim abre múltiples búferes listos para usar. (Hazlo :h backtick-expansion
en Vim para más.)
Ahora puede aplicar el comando Vim :bufdo
a todos estos archivos y realizar acciones como buscar y reemplazar interactivos:
:bufdo %s/a whale/a bowl of petunias/gce
El g
de "global" cambiará las ocurrencias del patrón en todas las líneas. El e
omitiremos errores si no se encuentra el patrón. La c
opción hace que esto sea interactivo. Si se siente seguro, puede omitirlo para realizar los cambios sin revisar cada uno.
Cuando haya terminado de revisar todos los búferes, guarde todo el trabajo que haya completado con:
:bufdo wq!
Luego, disfrute de la gloria de su tiempo y esfuerzo ahorrados.