#!/usr/bin/perl
#########################################################################################################
#用法如下:
#
#移动到你要修改文件名的目录下
#rename.pl -l 会把该目录下的所有文件名改为小写,例如 Abcd.xx 会改为 abcd.xx
#rename.pl -u 会把该目录下的所有文件名改为大写,例如 AbcD.xx 会改为 ABCD.xx
#rename.pl -c 会把该目录下的所有文件名改为首字母大写,例如 abcd.xx 会改为Abcd.xx
#rename.pl -d 会把该目录下的所有文件删掉前5个字母,例如 abcdef.xx 会改为f.xx
#rename.pl -r 会把该目录下的所有文件前2个字母挪到后面,第3个字母放在倒数第3,最前面再加“3”,例如 abcdef.xx 会改为3defcab.xx
#rename.pl -p yourPrefix 会把该目录下的所有文件名加前缀 yourPrefix, 例如 rename.pl -pimage_ 会把 abcd.xx 改为 image_abcd.xx
#rename.pl -s yourSuffix 同 -p 不过是添加后缀。
use Getopt::Std;
sub usage {
return "rename \n options: -1 -u -c -d\n\t-l lowcase name\n\t-u upcase name\n\t-c capital name\n\t-d delete
name\n";
}
getopts("1ucdrs:p:");
opendir D, "." or die "can noopen:$!";
if (!($opt_c || $opt_1 || $opt_u || $opt_d || $opt_r ||(defined $opt_s)||(defined $opt_p))) {#(())
print usage();
return;
}
while (defined ($file = readdir D)) {
$new = $file;
($bn, $sf) = split /\./,$file;
if ($opt_c) {
$bn =~ tr[A-Z][a-z];
$bn = ucfirst $bn;
}elsif ($opt_l) {
$bn =~ tr [A-Z][a-z];
}elsif ($opt_u) {
$bn =~ tr [a-z][A-Z];
}elsif ($opt_d) {
$bn=substr ($bn, 5);
}elsif ($opt_r) {
$bnl=substr ($bn, 3) ;
$bn2=substr (Sbn, 0,2) ;
$bn3=substr ($bn, 2,l) ;
$bn="3$bnl$bn3$bn2";
}elsif (defined $opt_s) {
$bn .= $opt_s;#;;
}elsif (defined $opt_p){
$bn = $opt_p.$bn;
}
if ($sf ne "") {
$new = "$bn.$sf";
}else {
$new = $bn;
}
rename($file,$new);
}
没有评论:
发表评论