我在一个文件夹中有519个JPG文件,我需要大量重命名。在newnames.txt文件中,我有一个519个新文件名的列表。有没有办法通过命令行或perl来运行名称列表(每个都在新行上)并重命名所有文件?
答案 0 :(得分:0)
由于您没有指定如何将文件名映射到“newnames.txt”数据,我将提供几个解决方案:
如果文件名按字母顺序排序,并且新名称的顺序与该顺序相对应:
use File::Slurp;
use File::Copy qw/move/;
my @newnames=read_file("newnames.txt");
chomp(@newnames);
my @files = glob("*.JPG");
for (my $i=0; $i < @files; $i++) {
die "Not enough new names for file $files[$i]" unless $newnames[$i];
move($files[$i], $newnames[$i])
or die "Failed to move $files[$i] to $newnames[$i] : $!";
}
如果文件名与新名称在同一个文件中,则在2列中:
use File::Slurp;
use File::Copy qw/move/;
my @newnames=read_file("newnames.txt");
chomp(@newnames);
foreach my $line (@newnames) {
my ($file, $new)= split(/,/, $line);
move($file, $new)
or die "Failed to move $file to $new : $!";
}