Perl スクリプト `rename` を使用して、ファイルの名前を in1.jpg、in2.jpg、in3.jpg などから out0001.jpg、out0002.jpg、out0003.jpg などに変更します。

Perl スクリプト `rename` を使用して、ファイルの名前を in1.jpg、in2.jpg、in3.jpg などから out0001.jpg、out0002.jpg、out0003.jpg などに変更します。

in1.jpg、in2.jpg、in3.jpg などの名前を持つ多数のファイルの名前を、out0001.jpg、out0002.jpg、out0003.jpg などに変更したいと思います。Perl ディストリビューションに付属する Perl スクリプトrename(またはprename) を使用した解決策を提案していただければ幸いです。

答え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
        }
    }

関連情報