it's up to you to grep the output for setting your burn process.#!/usr/bin/perl use strict; use warnings; my ($k,$nom); my $maxsize = 690_000; my $makeiso = 0; my $pattern = "*"; my @CD = ([0,[]]); my $i; my $inserted = 0; use Data::Dumper; for (@ARGV) { $maxsize = $1 if /-ma*x*s*i*z*e*=(\d+)/; $makeiso = 1 if /-mkisofs/; $pattern = $1 if /-pattern=(.*)/; die "usage $0 -max=xxx (maxsize in K) -mkisofs -pattern='*.gz' -help" if (/-he*l*p*/) ; } my $pid = open(SOURCE, "du -sk $pattern|sort -nr|") or die "Couldn't g +et SOURC while (<SOURCE>) { chop; ($k ,$nom ) = split /\t/,$_,2; $inserted = 0; if ($k > $maxsize) { print '"' . $nom . '"' . " out of Range $k\n"; next; } foreach $i ( 0 .. $#CD ) { my $rcontent = \@{$CD[$i]} ; if ($rcontent->[0] <= ($maxsize - $k)) { $rcontent->[0] = $rcontent->[0] + $k; push @{$rcontent->[1]},$nom; $inserted = 1; } last if $inserted; } if (! $inserted) { push @CD,[$k,[$nom]] }; } close(SOURCE) or die "Couldn't close: $!\n"; if ($makeiso) { foreach $i ( 0 .. $#CD ) { my $rcontent = \@{$CD[$i]} ; print "mkisofs -o cd$i.iso " . join " ", map {qq/'$_'/} +@{$rcontent->[1]}; print "\n"; } } else { $Data::Dumper::Varname="CD"; print Data::Dumper::Dumper(@CD); }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: quick CD burner Selector/Optimiser
by Aristotle (Chancellor) on Dec 15, 2003 at 04:24 UTC | |
by dominix (Deacon) on Dec 15, 2003 at 10:54 UTC | |
|
Re: quick CD burner Selector/Optimiser
by b10m (Vicar) on Dec 15, 2003 at 12:47 UTC | |
by dominix (Deacon) on Dec 16, 2003 at 10:41 UTC | |
|
Re: quick CD burner Selector/Optimiser
by spartan (Pilgrim) on Dec 19, 2003 at 20:52 UTC | |
by dominix (Deacon) on Dec 22, 2003 at 04:12 UTC | |
by zengargoyle (Deacon) on Dec 22, 2003 at 06:49 UTC |