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); }
In reply to quick CD burner Selector/Optimiser by dominix
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |