Renaming a List of Files Interactively

Section 10.9 shows how to rename a set of files, e.g., changing *.new to *.old. Here's a different way, done from inside vi. This gives you a chance to review and edit the commands before you run them. Here are the steps:

&& Section 34.10, $ Section 32.5

% vi                
               Start vi without a filename
               :r !ls *.new        
               Read in the list of files, one filename per line
               :%s/.*/mv -i &&/    
               Make mv command lines
               :%s/new$/old/       
               Change second filenames; ready to review
               :w !sh              
               Run commands by writing them to a shell
               :q!                 
               Quit vi without saving

If you've made your own version of ls that changes its output format, that can cause trouble here. If your version gives more than a plain list of filenames in a column, use!/bin/ls instead of just !ls.

— JP