-2

大量の名前を変更する必要があるフォルダーに 519 個の JPG ファイルがあります。ファイル newnames.txt には、519 個の新しいファイル名のリストがあります。コマンド ラインまたは perl を介してその名前のリスト (それぞれが新しい行にある) を実行し、すべてのファイルの名前を変更する方法はありますか?

4

1 に答える 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 に答える