日曜日, 4月 19, 2015

rar.001のように分割されたファイルをperlスクリプトで結合してみた(Mac利用)

結合ソフトとかあると思うけど、ターミナルから実行権付きスクリプトを実行して結合できるようにしてみました。
「rar.001」の中身は単にぶった切られたファイルなのでcatで結合しているだけ。
たいした出来ではないが、個人的には残しておきたいのでここに張っておきます。

条件
・結合ファイル名は「○○○.part1.rar.001」のような形式を想定。
・part1〜part9まで存在する事を想定。結合対象が存在しなければ、そこのpartはスキップ。
・結合対象はカレントディレクトリに揃っている想定。
・カレントディレクトリには「○○○.part1.rar.001」の○○○に該当するファイル名は1種類であること。
・結合処理後は元データを削除。
・エラーチェックはしていない。そのため、元データの片方(例えば.rar.002)が破損していても気にせず結合するので出来上がりは破損となる。


---
#!/usr/bin/perl

$count = "1";
$tmp = "/tmp/hogehoge.pl_tmp";

while ($count < 10){
        $keyword = "*.part${count}.rar.001";
        $chk = system("ls $keyword > $tmp 2> /dev/null");

        if ($chk == "0"){
                $keyword_new = `cat $tmp`;
                @keyword_new = split(/\.001$/, $keyword_new);

                print "$keyword_new[$0] Creating...\n";
                system("cat ${keyword_new[$0]}.00? > $keyword_new[$0]");
                system("rm -fr ${keyword_new[$0]}.00?");
                system("sleep 5");
        }

        $count ++;
}

system("rm $tmp");
print "\n\nhogehoge.pl finish!!!\n\n\n";
---