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

1 ответ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
        }
    }

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .