perl统一修改文件前缀并排序
如题,perl统一修改文件前缀并排序。
举例说明,修改*.txt文件,并排序。
当前目录下,有如下文件
a.txt
b.txt
fsjkd.txt
ffsjk_tst.txt
运行rename_prefix脚本后,输入的第一个参数为txt,第二个参数为test,结果如下:
test1.txt
test2.txt
test3.txt
test4.txt
rename_prefix脚本的内容如下:
#!/bin/perl
use 5.010;
print "Pleast input file suffix which U want to rename!\n";
chomp (my $suffix = <>); # 去除输入参数中的回车符
print "Pleast output file prefix which U want to rename!\n";
chomp (my $prefix = <>); # 去除输入参数中的回车符
my $i;
foreach my $file(glob "*.$suffix") {
$i += 1;
my $new_file = $file =~ s/\w*\./$prefix$i./r; # 使用r修饰符,实际上是在替换前先拷贝一份待替换数据,然后在副本上进行替换,所以原始数据不会发生改变
if (-e $new_file) {
warn "Cannot rename $file to $new_file: $new_file exists\n";
} elsif (rename $file => $new_file) {
} else {
warn "rename $file to $new_file failed:$!\n";
}
}