修改文件的名称在目录
问题描述:
我需要修改的文件名称的一部分目录中,我用下面的代码,但它只是在终端打印字符串的修改,但不保存它修改文件的名称在目录
my @files = glob("*.grb *.out");
foreach my $file (@files) {
print "$file\n";
s/d02/d03/g;
}
我怎样才能让他们与字符串d03而不是d02?
答
my @files = glob("*.grb *.out");
foreach my $file (@files) {
(my $newName = $file) =~ s/d02/d03/g;
rename $file, $newName;
}
或者,如果你有Perl 5.14+,
my @files = glob("*.grb *.out");
foreach my $file (@files) {
my $newName = $file =~ s/d02/d03/gr;
rename $file, $newName;
}
这都将*d02*
文件重命名为*d03*
文件(磁盘上)。
+0
谢谢@Perl狗 –
+0
谢谢@ikegami的补充。我仍然不习惯'/ r'。 Ahhrg。我用CamelCase。对我感到羞耻。对不起。 – PerlDuck
上述代码不会将修改后的文件名打印到终端。您首先打印它,然后对未初始化的值('$ _'变量)进行替换。 请粘贴您实际尝试的代码,代表您尝试解决问题的最佳方法。 –
请参阅[重命名](http://p3rl.org/rename)。 – choroba