Isso deve funcionar:
find . -name "*.txt" -exec vim {} +
Use Vim, é melhor para sua saúde. : -)
A opção +
frequentemente ignorada para -exec
faz com que todos os nomes dos arquivos (até os limites de tamanho da linha) apareçam em uma linha, ou seja, você ainda obtém todos os arquivos abertos em um vim
session (navegada com :n
para o próximo e :N
para o arquivo anterior).
Com vim -p
você obtém uma guia de arquivo para cada arquivo. Verifique :help tab-page-commands
para mais detalhes.
Com vim -o
, você obterá janelas divididas horizontalmente para cada arquivo, vim -O
dividir verticalmente as janelas. Verifique :help window-move-cursor
para mais detalhes.
Observe que a versão anterior dessa resposta, vim $(find . -name "*.txt")
, não funciona com espaços em nomes de arquivos e tem implicações de segurança.
Pipar para xargs vi
dá um Warning: Input is not from a terminal
, mais um terminal com comportamento completamente falso depois. Grawity do usuário explicou porque em um comentário abaixo, e com um pouco mais de explicação em esta questão .