#!/usr/bin/perl -w use strict; use base 'Dyer::CLI'; use File::PathInfo::Ext; my $o = gopts('f'); my $files = argv_aspaths() or man(); scalar @$files or man(); my $f = new File::PathInfo::Ext; for (@$files){ $f->set($_) or warn("bad file? : $_") and next; $f->is_file or warn("is not file: $_") and next; my $oldname = $f->filename; my $newname = $f->filename_only; $newname=~s/\s+/_/g; $newname=~s/^\s+|\s+$//g; $newname=~s/[^\w\.\_\-]+//sig; my $x=''; if (-e $f->abs_loc."/$newname.".$f->ext){ while ( -e $f->abs_loc."/$newname$x.".$f->ext) { $x++; } } $newname = "$newname$x.".$f->ext; unless( $o->{f} ){ yn("Rename [$oldname] to [$newname]?") or next; } $f->rename($newname); } no warnings; sub main::man { print STDERR `perldoc $0`; exit; } =pod =head1 NAME renamerfpi =head1 DESCRIPTION =head1 OPTIONS -f force, no prompt =head1 USAGE renamerfpi ./files*jpg renamerfpi -f ./files*jpg =cut