joe*_*oey 3 perl loops for-loop rename file-rename
我正在运行Perl脚本并尝试重命名文件,如下所示.
我有一个包含其他非相关文件的文件夹中的*.ru.jp文件列表.我想用一个我作为计数器变量获得的数字重命名.
在Bash中,我会这样做......
for i in $(ls *.ru.jp); do x=${i%%.*}; mv $i "$x"t"$counter".ru.jp ;done
Run Code Online (Sandbox Code Playgroud)
例如,如果计数器是1,myfile.ru.jp将被重命名为myfilet1.ru.jp."t"只是一个命名,表示t1,t2 ......等.并且最后会有一个外部循环,最终将标记mafilet2.ru.jp等等,因为计数器变量增加.
我想知道如何在Perl脚本中编写和表示类似for循环?
谢谢.
-joey
perl -e 'for $old (@ARGV) {
++$counter;
if (($new=$old) =~ s/(\.ru\.jp)\z/t$counter$1/) {
rename $old => $new or warn "$0: rename: $!\n";
}
}' *.ru.jp
Run Code Online (Sandbox Code Playgroud)
您可以使用Perl的文件glob和内置重命名函数,如下所示:
use warnings;
use strict;
my $i = 1;
for (<*.ru.jp>) {
my $file = $_;
s/\.ru\.jp$//;
my $new = $_ . 't'. $i . '.ru.jp';
rename $file, $new or die "Can not rename $file as $new: $!";
$i++;
}
Run Code Online (Sandbox Code Playgroud)