fantasai: xre - PERL regex rename for every VCS

I love Larry Wall's rename command. It makes renaming files so much easier. I no longer have to think about it, I just do it, and it takes 15 seconds to rename an entire directory.

Except when there's a version control system involved. Subversion requires using svn rename and Mercurial wants hg rename and Git wants git mv and really, it's such a pain.

Faced with a long list of Subversion renames, I finally sat down and wrote a script to give me rename's interface with other VCSes. And since other people might find it useful, I'm posting it here as open source.

xre v3 in PERL

On Windows systems, you'll want to add a .pl extension.

On UNIX systems, you'll want to update the first line to point to the output of which perl and mark it executable (chmod +x xre). I keep mine in ~/bin/, which is in my PATH.

xre works as follows:

xre [OPTION] COMMAND PERLEXPR [list of strings]


It simply loops over the list of strings and executes the command once per string with two arguments appended: the original string and its modified version.

A typical invocation is

xre 'hg mv' 's/htm/html/' *.html
(Run hg mv on each filename shell-expanded from *.html, with first argument as the original filename and the second replacing “htm” with “html”.)

If you're unsure, just run xre at the command line and it will tell you how it works. Additionally, the -p option prints without executing in case you want to double-check; and the -v prints while executing so you can see what it's doing.