Tohle by mělo stačit:
find . -name "*.txt" -exec vim {} +
Používejte Vim, je to lepší pro vaše zdraví. :-)
Často přehlížený + možnost -exec zobrazí všechny názvy souborů (až do omezení délky řádku) na jednom řádku, tj. stále budete mít všechny soubory otevřené v jednom vim relace (navigováno pomocí :n pro další a :N pro předchozí soubor).
S vim -p získáte kartu souboru pro každý soubor. Zkontrolujte :help tab-page-commands pro více podrobností.
S vim -o získáte horizontálně rozdělená okna pro každý soubor, vim -O vertikálně dělená okna. Zkontrolujte :help window-move-cursor Více podrobností.
Všimněte si, že předchozí verze této odpovědi, vim $(find . -name "*.txt") , nepracuje s mezerami v názvech souborů a má bezpečnostní důsledky.
Potrubí do xargs vi dává Warning: Input is not from a terminal , plus terminál se zcela falešným chováním poté. Uživatel grawity vysvětlil proč v komentáři níže a trochu více vysvětlení v této otázce.
Nebo spusťte vim a odtud:
:args **/*.txt