大量の名前を変更する必要があるフォルダーに 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 に答える