Я хотел бы переименовать большое количество файлов с именами in1.jpg, in2.jpg, in3.jpg и т.д. В out0001.jpg, out0002.jpg, out0003.jpg и т.д. Благодарен, если кто-нибудь предложит решение с использованием сценария perl. rename
(или prename
), которое поставляется с дистрибутивом perl.
1 ответ
0
Просто для удовольствия и бесплатно ...
Я бы использовал ссылки, чтобы сохранить исходные имена, но вы можете изменить команду ссылки (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
}
}