rozdeleni souboru

Petr Vileta petr na practisoft.cz
Pátek Září 26 01:35:57 CEST 2003


> prosim o radu. Mam 1 GB veliky soubor (inbox) a potreboval bych jej
rozdelit
> na 90MB kusy, aby bylo mozno s nim rozumne pracovat. Idealni by bylo neco
> jako cat soubor > soubor1 az 10 ale s velikosti 90 MB.
> Prosim, prosim, poradi mi nekdo?
Pisu to narychlo a z hlavy, tak to berte s rezervou, napred to vyzkousejte a
pripadne priopravte.

#!/usr/bin/perl
use CGI qw(:standard);
$vstup=$ARGV[0];
$outpath=$ARGV[1] . '/'; $outpath=~s/\/+/\//g;
$newsize=($ARGV[2]*1024)*1024;
$cislo=$konec=$velikost=0;
open VSTUP, "<$vstup";
$vystup=$outpath . sprintf("%03d",$cislo);
open VYSTUP, ">$vystup";
while($radka = <VSTUP>)
    {
    $konec=1 if($radka eq chr(10));
    if($konec==1 and substring($radka,0,5) eq 'From' and $velikost >
$newsize)
        {
        close VYSTUP;
        $cislo++;
        $konec=$velikost=0;
        $vystup=$outpath . sprintf("%03d",$cislo);
        open VYSTUP, ">$vystup";
        }
    $velikost+=length($radka);
    print VYSTUP $radka;
    }
close VYSTUP;
close VSTUP;

Ulozte to treba jako "sekacka.pl" a vola se to pak
sekacka.pl path/jmeno_vstupniho_souboru path_pro_vystupni_soubory
pozadovana_velikost_v_kilobytech

poradi vstupnich argumentu je nutne dodrzet.
A jeste licence :-)
Tento skript je zdarma k dispozici kazdemu, komu pomuze a kdokoliv ho muze
libovolne modifikovat.

--
Petr




Další informace o konferenci Linux