我想將名稱為 in1.jpg、in2.jpg、in3.jpg 等的大量檔案重命名為 out0001.jpg、out0002.jpg、out0003.jpg 等。rename
(或prename
) 隨 perl 發行版提供。
答案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
}
}