varios texto test solo siguientes regulares regresará que por patrones palabra líneas los expresiones exacta cuál consola con comiencen comandos comando buscar archivos search vim command-line sed grep

search - texto - grep varios patrones



¿Puedes editar en masa todos los archivos devueltos en un grep? (6)

¡Puedes hacerlo sin ningún procesamiento de la salida grep! Esto incluso te permitirá ir a la línea derecha (usando :help quickfix comandos :help quickfix , ej :cn o :cw ). Entonces, si estás usando bash o zsh:

vim -q &lt(grep foo *.c)

Quiero editar en masa una tonelada de archivos que se devuelven en un grep. (Lo sé, debería mejorar en sed).

Entonces si lo hago:

grep -rnI ''xg_icon-*''

¿Cómo puedo canalizar todos esos archivos en vi?


La forma más fácil es hacer que grep devuelva solo los nombres de archivo ( -l lugar de -n ) que coinciden con el patrón. Ejecuta eso en una subshell y envía los resultados a Vim.

vim $(grep -rIl ''xg_icon-*'' *)


Una buena solución general para esto es usar xargs para convertir un stdout de un proceso como grep en una lista de argumentos.

A la:

grep -rIl ''xg_icon-*'' | xargs vi


si lo que desea editar es similar en todos los archivos, entonces no tiene sentido usar vi para hacerlo manualmente. (aunque vi también puede tener secuencias de comandos), hipotéticamente, se ve algo así, ya que nunca mencionas lo que quieres editar

grep -rnI ''xg_icon-*'' | while read FILE do sed -i.bak ''s/old/new/g'' $FILE # (or other editing commands, eg awk... ) done


si usa vim y la opción -p, abrirá cada archivo en una pestaña, y podrá alternar entre ellos usando gt o gT, o incluso el mouse si tiene soporte para el mouse en la terminal


vi `grep -l -i findthisword *`