使用 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 等。rename(或prename) 隨 perl 發行版提供。

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

相關內容