Over a million developers have joined DZone.

Ren - Rename Files Interactively

DZone's Guide to

Ren - Rename Files Interactively

Free Resource
You may change the path to your editor...

Mine's usually /usr/bin/vim - but /bin/vi is often symlinked to that if it's installed...

# ren - rename files interactively
# John Harrison
# 14 August 2006 - from shell version
use warnings;
use strict;

use File::Glob qw(:globally :nocase);
use File::Copy;

my $editor = '/bin/vi';

my @files = @ARGV;

die "Usage: $0 FILES\n" unless ($#files >= 0);

print join( $/, @files ), $/;

for my $file (@files) {

    my $tmp = '/tmp/ren.' . $$;

    die "Can't write to '$tmp': $!\n" unless open( TMP, ">$tmp" );

    print TMP "$file";

    close TMP;

    system("$editor $tmp");

    die "Can't read '$tmp': $!\n" unless open( TMP, $tmp );

    chomp( my $new = 

    close TMP;

    if ( $new eq $file ) {

        print "'$file': No change.\n";

    elsif ( -f $new ) {

        print "'$new': Already exists.\n";

    else {

        die "Can't rename '$file' to '$new': $!\n" unless move( $file, $new );

        print "mv '$file' -> '$new'\n";

    unlink $tmp;



Opinions expressed by DZone contributors are their own.


Dev Resources & Solutions Straight to Your Inbox

Thanks for subscribing!

Awesome! Check your inbox to verify your email so you can start receiving the latest in tech news and resources.


{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}