Cambie el nombre de los archivos de in1.jpg, in2.jpg, in3.jpg, etc. a out0001.jpg, out0002.jpg, out0003.jpg, etc. usando el script Perl `rename`

Cambie el nombre de los archivos de in1.jpg, in2.jpg, in3.jpg, etc. a out0001.jpg, out0002.jpg, out0003.jpg, etc. usando el script Perl `rename`

Me gustaría cambiar el nombre de una gran cantidad de archivos con nombres in1.jpg, in2.jpg, in3.jpg, etc. a out0001.jpg, out0002.jpg, out0003.jpg, etc. Agradezco que alguien sugiera una solución utilizando el script Perl. rename(o prename) que viene con la distribución de Perl.

Respuesta1

Sólo por diversión y gratis...

Usaría enlaces para conservar los nombres originales, pero puede cambiar el comando de enlace ( ln) a un comando de movimiento ( mv) si lo desea (agregado como comentario):

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

información relacionada