我想用名称结构重命名数千个文件:
IMAGE_6290.JPG
最多IMAGE_9999.JPG
成:
image_0001.JPG
最多image_3710.JPG
所以基本上应该按6289
我已经尝试过rename命令(在Debian 7.0下),但我不知道如何减去两个变量。
我最好的尝试是:
rename -n 's/(\d{4})\.JPG$/_$1-6289\.JPG/' *.JPG
但它给出的结果如下:
IMAGE6484.JPG
已重命名为IMAGE_6484-6289.JPG
有任何帮助吗?
非常感谢!
答案 0 :(得分:2)
rename -n 's/(\d{4})\.JPG$/sprintf("_%04d.JPG",$1-6289)/e' *.JPG
答案 1 :(得分:0)
看起来你想在命令行中这样做,但是在Perl中(因为你有perl标签),你可以使用 baby cart运营商。
#!/usr/bin/perl
use strict;
use warnings;
my @jpg_files = glob "*.JPG";
foreach my $file (@jpg_files){
if (my $new_name = $file =~ s/(\d{4}).JPG/_@{[$1 - 6289]}.JPG/r) {
rename $file, $new_name;
}
# or simply
rename $file , $file =~ s/(\d{4}).JPG/_@{[$1 - 6289]}.JPG/r;
}