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