Questo dovrebbe risolvere il problema:
find . -name "*.txt" -exec vim {} +
Usa Vim, è meglio per la tua salute. :-)
Il spesso trascurato +
opzione a -exec
fa apparire tutti i nomi di file (fino ai limiti di lunghezza della riga) in una riga, ovvero tutti i file vengono aperti in uno vim
sessione (navigato con :n
per il prossimo e :N
per il file precedente).
Con vim -p
ottieni una scheda file per ogni file. Seleziona :help tab-page-commands
per maggiori dettagli.
Con vim -o
otterrai finestre divise orizzontalmente per ogni file, vim -O
finestre divise verticalmente. Seleziona :help window-move-cursor
per ulteriori dettagli.
Nota che la versione precedente di questa risposta, vim $(find . -name "*.txt")
, non funziona con gli spazi nei nomi dei file e ha implicazioni sulla sicurezza.
Piping in xargs vi
dà un Warning: Input is not from a terminal
, oltre a un terminale con un comportamento completamente fasullo in seguito. L'utente grawity ha spiegato perché in un commento qui sotto e con qualche spiegazione in più in questa domanda.
Oppure esegui vim e da lì:
:args **/*.txt