On Fri May 7 23:42:15 EDT 2010, [email protected] wrote:
> How might I split a file into pieces specified by size?
>
> split(1) lets me specify lines and regex contexts as delimiters, but what if
> I want a 40MB file split up into 1.44MB chunks, say?
in retrospect, this would be better in c. sometimes
it's just a challenge to use a screwdriver like a pry bar.
- erik
---
#!/bin/rc
if(~ $#* 0 1){
echo usage: bsplit sz file >[1=2]
exit usage
}
ch=$1
shift
for(i){
sz=`{ls -ld $i | awk '{print $6}'}
j = `{awk 'BEGIN{
sz = ENVIRON["sz"]
ch = ENVIRON["ch"]
digits = log((sz + ch - 1)/ch)/log(16);
o = 0;
for(i = 0;; i++){
if(o + ch >= sz)
break;
print i
printf "%.*x\n", digits, i
o += ch
}
if(o < sz){
print i
printf "%.*x\n", digits, i
}
}'
}
while(! ~ $#j 0){
dd -if $i -of $i^$j(2) -iseek $j(1) -count 1 -bs $ch >[2=]
j = $j(3-)
}
}