Cela devrait faire l'affaire :
find . -name "*.txt" -exec vim {} +
Utilisez Vim, c'est mieux pour votre santé. :-)
Le + souvent négligé option à -exec fait apparaître tous les noms de fichiers (jusqu'aux limites de longueur de ligne) sur une seule ligne, c'est-à-dire que vous obtenez toujours tous les fichiers ouverts en un vim session (naviguée avec :n pour suivant et :N pour le fichier précédent).
Avec vim -p vous obtenez un onglet de fichier pour chaque fichier. Vérifiez :help tab-page-commands pour plus de détails.
Avec vim -o vous obtiendrez des fenêtres divisées horizontalement pour chaque fichier, vim -O fenêtres divisées verticalement. Vérifiez :help window-move-cursor pour plus de détails.
Notez que la version précédente de cette réponse, vim $(find . -name "*.txt") , ne fonctionne pas avec des espaces dans les noms de fichiers et a des implications sur la sécurité.
Tuyauterie en xargs vi donne un Warning: Input is not from a terminal , plus un terminal avec un comportement complètement faux par la suite. Grawity de l'utilisateur a expliqué pourquoi dans un commentaire ci-dessous, et avec un peu plus d'explications dans cette question.
Ou lancez vim et à partir de là :
:args **/*.txt