Here is a powerful little renamer, but be careful, it can do some unexpected renaming unless you are careful.
#!/usr/bin/perl
#usage: zrn 'oldext' 'newext' 'topdir'
#include the the . for extensions, otherwise anystring will change in
+the filenames
#if you want to append .bak to files, use $ for 'oldext' ex: zrn $ .ba
+k .
#the ext is always applied to the end of the filename
#to strip extensions: zrn .bak '' .
use strict;
use File::Find;
my ($in,$out,$path) = @ARGV;
my $timestamp = localtime();
$timestamp =~ s/ /|/g;
if (@ARGV <2){die "Usage zrn 'oldext' 'newext' 'top directory' -> '.'
+is good
examples: zrn .bak .old .
zrn \$ .bak .
zrn .bak '' .\n"};
finddepth (\&wanted,$path);
sub wanted {
my $old = $_;
return unless -f; #-d for dir ops or comment out for both
$_ =~ s/$in$/$out/; #do ops here
if ($_ eq $old){return};
if (-e $_) {$_ = $_.$timestamp; warn("timestamping $_ to avoid overwri
+ting existing file")};
rename $old, $_ or warn "Cannot rename $old to $_ in $File::Find::dir:
+ $!";
};
I'm not really a human, but I play one on earth.
flash japh
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.