in1.jpg、in2.jpg、in3.jpg などの名前を持つ多数のファイルの名前を、out0001.jpg、out0002.jpg、out0003.jpg などに変更したいと思います。Perl ディストリビューションに付属する Perl スクリプトrename
(またはprename
) を使用した解決策を提案していただければ幸いです。
答え1
ただ楽しむため、そして無料で...
元の名前を保持するためにリンクを使用しますが、必要に応じてリンク コマンド ( ln
) を移動コマンド ( mv
) に変更できます (コメントとして追加)。
#!/usr/bin/perl
# Creates link files with ascending sequence numbers ($USE_SEQ=1) or original numbers
# ($USE_SEQ=0):
$USE_SEQ = 1;
unless(opendir(DIRECTORY,".")) { die "Unable to open current directory.\n"; }
@files = readdir(DIRECTORY);
closedir(DIRECTORY);
$seqnum = 1;
foreach $file (@files) {
if ($file =~ /\.jpg$/i) {
($number) = ($file =~ /(\d+).jpg/i);
$number = $seqnum++ if $USE_SEQ;
$padded_number = sprintf "%05d", $number;
$padded_name = "out" . $padded_number . ".jpg";
`ln -s "$file" $padded_name`;
# `mv "$file" $padded_name`; # untested
}
}