2016-05-17 95 views
0

我需要修改的文件名称的一部分目录中,我用下面的代码,但它只是在终端打印字符串的修改,但不保存它修改文件的名称在目录

my @files = glob("*.grb *.out"); 
foreach my $file (@files) { 
    print "$file\n"; 
    s/d02/d03/g; 
} 

我怎样才能让他们与字符串d03而不是d02?

+1

上述代码不会将修改后的文件名打印到终端。您首先打印它,然后对未初始化的值('$ _'变量)进行替换。 请粘贴您实际尝试的代码,代表您尝试解决问题的最佳方法。 –

+2

请参阅[重命名](http://p3rl.org/rename)。 – choroba

回答

1
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

相关问题