Perl 小品集 ─ renames

#!/usr/bin/perl
# renames.pl
#
# 画像ファイルに連番をつけて名前を変更する

# 開始番号の取得
if($ARGV[1] eq ""){
    $number = 1;
    }
else{
    $number = $ARGV[1];
    }
    
# 画像ファイル名の取得
$newname = $ARGV[0];
if ($newname eq ""){
    print "Input new file name [and start number].\n";
    print "You can rename back by running <backnames>.\n";
    exit (0);
    }

# ファイル一覧の取得
# オリジナルのファイル名を @files に格納
@files1 = glob ("*.gif");
@files2 = glob ("*.jpg");
@files3 = glob ("*.png");
@files = (@files1, @files2, @files3);

# 新しいファイル名を @newname に格納
$sum = 0;
for $oldname (@files){
    @body = split /\./, $oldname;
    if($number < 10){
        $p_number = "00$number";
        }
    elsif($number < 100){
        $p_number = "0$number";
        }
    else{
        $p_number = $number;
        }
    $newfiles[$sum] = "$newname$p_number.$body[1]";
    $sum++;
    $number++;
    }

# オリジナルのファイル名と新しいファイル名の比較
# 同じものがあれば作業をしない
for $oldname (@files){
    for $newname (@newfiles){
        if($oldname eq $newname){
            print "Found the same file name!\n";
            exit(0);
            }
        }
    }

# バックアップを backnames に保存する
open OUT, ">backnames";
print OUT "#!/bin/bash\n";

# ファイル名の変換
$count=0;
for $oldname (@files){
    system ("mv $oldname $newfiles[$count]");
    print OUT "mv $newfiles[$count] $oldname\n";
    $count++;
    }
close (OUT);

# バックアップファイルに実行属性をつけて逆変換を可能にする
system ("chmod +x backnames");



[INDEX]