ディレクトリ下ファイル名一括変更(DVD作成用)

 指定されたディレクトリ下のファイル名を、ディレクトリ名+インデックス値に変更します。
 インデックス値は、ファイル名の半角数値以降のものが使用されます。
 キャプチャやエンコードしたファイルをDVD化するときに、ファイル名をあらかじめ変更しておくと 楽なのでこのプログラムを作りました。
 MovieWriter 2.0 を使用しているので、拡張子 .mp2 を .mpa へ変更する処理も同時にやっています。

[使用法] perl frendir.pl ビデオ1


#!/usr/local/bin/perl
# *************************************************************
#   ファイル名をディレクトリ名+インデックス値形式に一括変換
# *************************************************************

# ディレクトリ指定の取得
$dir = $ARGV[0];
if ($dir eq "" || $dir eq ".") {
    $dir = ".";
}

# 指定ディレクトリに移動出来なければ終了
$ok = chdir $dir;
if ($ok == 0) {
    exit -1;
}

# リネーム後に先頭につける文字列を決定
$hed = $ARGV[1];
if ($hed eq "") {
    if ($dir ne ".") {
        $hed = $dir . "_";
    }
}

# ディレクトリリスト取得
@files = <*>;

# 個々のファイルに対するリネーム処理
foreach (@files) {
    # 元の名前
    $src = $_;

    # 数値以降のファイル名のみに変更
    s/(\D*)(\d*)/$2/;

    if ($_ eq "") {
        # 数値インデックスがない場合は何もしない
        next;
    }

    # 拡張子変更
    s/.mp2$/.mpa/i;     # .mp2->.mpa 大文字小文字区別無し

    $dst = $hed . $_;

    # リネーム実行
    print "RENAME : $dir/$src -> $dir/$dst\n";
    rename $src, $dst;
}
exit 0;

総合ホームページ Perl納戸部屋