我需要大量重命名的文件夹中有 519 个 JPG 文件。在文件 newnames.txt 中,我列出了 519 个新文件名。有没有办法通过命令行或 perl 来运行该名称列表(每个都在一个新行上)并重命名所有文件?
问问题
227 次
1 回答
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 : $!";
}
于 2013-05-03T17:54:27.680 回答