Renomeie arquivos de in1.jpg, in2.jpg, in3.jpg, etc para out0001.jpg, out0002.jpg, out0003.jpg etc usando o script perl `rename`

Renomeie arquivos de in1.jpg, in2.jpg, in3.jpg, etc para out0001.jpg, out0002.jpg, out0003.jpg etc usando o script perl `rename`

Gostaria de renomear um grande número de arquivos com nomes in1.jpg, in2.jpg, in3.jpg, etc. para out0001.jpg, out0002.jpg, out0003.jpg, etc. Agradeço se alguém sugerir uma solução usando o script perl rename(ou prename) que vem com a distribuição perl.

Responder1

Só por diversão e de graça...

Eu usaria links para manter os nomes originais, mas você pode alterar o comando link ( ln) para um comando mover ( mv) se desejar (adicionado como comentário):

#!/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
        }
    }

informação relacionada