使用perl重命名文件

czfnxgou  于 2022-11-15  发布在  Perl
关注(0)|答案(1)|浏览(296)

我想用Perl重命名文件。Example_22VOO0142321.xml22VOO0142321.xml编号不同,但example_必须保留。我如何从文件名中删除example_?

opendir( D, "$source_dir" ) or mail_die("Fout bij openen van $source_dir : $!");

my @allfiles = grep { -f "$source_dir/$_" } readdir D;

closedir D;

my @examplefiles = grep { /example_.+(\.xml)$/i } @allfiles;  

my $file_name;
foreach $file_name (@examplefiles) {
   ??
}
ni65a41a

ni65a41a1#

几乎可以肯定,使用File::Copy会更好(这里的“几乎”一词只是一种限制,您真的不想在低级函数中这样做),但您可以这样做:

use 5.12.0;

my $path = shift;
opendir my $dir, $path or die "can't opendir $path: $!";

for my $name ( grep { /^example_/ && -f "$path/$_" } readdir($dir) ){
        rename("$path/$name", "$path/" . substr $name, 8) or die "$name: $!";
}

但是,重申一下,你真的不想这样做。使用File::Copy代替。来自perldoc rename:“此函数的行为因您的系统实现而有很大的不同。”不要使用它。

相关问题