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