Esto debería funcionar:
find . -name "*.txt" -exec vim {} +
Usa Vim, es mejor para tu salud. :-)
El +
a menudo pasado por alto opción a -exec
hace que todos los nombres de archivo (hasta los límites de longitud de línea) aparezcan en una sola línea, es decir, aún obtiene todos los archivos abiertos en uno vim
sesión (navegado con :n
para siguiente y :N
para el archivo anterior).
Con vim -p
obtienes una pestaña de archivo para cada archivo. Marque :help tab-page-commands
para más detalles.
Con vim -o
obtendrá ventanas divididas horizontalmente para cada archivo, vim -O
Ventanas divididas verticalmente. Marque :help window-move-cursor
para más detalles.
Tenga en cuenta que la versión anterior de esta respuesta, vim $(find . -name "*.txt")
, no funciona con espacios en los nombres de archivo y tiene implicaciones de seguridad.
Tubería en xargs vi
da un Warning: Input is not from a terminal
, además de una terminal con un comportamiento completamente falso después. El usuario grawity explicó por qué en un comentario a continuación, y con un poco más de explicación en esta pregunta.
O ejecuta vim y desde allí:
:args **/*.txt