#!/usr/bin/perl -w use strict; use File::Find; my ($dir, $in, $out) = @ARGV; File::Find::finddepth( { wanted => sub { my $o = $_; s/$in/$out/ or return; -e or rename $o, $_; } }, $dir );