Das sollte funktionieren:
find . -name "*.txt" -exec vim {} +
Verwenden Sie Vim, es ist besser für Ihre Gesundheit. :-)
Der oft übersehene +
Option auf -exec
lässt alle Dateinamen (bis zur Begrenzung der Zeilenlänge) in einer Zeile erscheinen, d.h. Sie erhalten immer noch alle geöffneten Dateien in einer vim
Sitzung (navigiert mit :n
für weiter und :N
für vorherige Datei).
Mit vim -p
Sie erhalten eine Dateiregisterkarte für jede Datei. Kreuzen Sie :help tab-page-commands
an für weitere Details.
Mit vim -o
Sie erhalten horizontal geteilte Fenster für jede Datei, vim -O
vertikal geteilte Fenster. Kreuzen Sie :help window-move-cursor
an für mehr Details.
Beachten Sie, dass die vorherige Version dieser Antwort vim $(find . -name "*.txt")
ist , funktioniert nicht mit Leerzeichen in Dateinamen und hat Auswirkungen auf die Sicherheit.
Weiterleiten an xargs vi
ergibt einen Warning: Input is not from a terminal
, plus ein Terminal mit völlig falschem Verhalten danach. Benutzer grawity erklärte warum in einem Kommentar unten und mit etwas mehr Erklärung in dieser Frage.
Oder führen Sie vim und von dort aus:
:args **/*.txt