Date: Thu, 4 Apr 2002 01:02:11 +0300 From: Giorgos Keramidas <keramida@ceid.upatras.gr> To: William Gnadt <wgnadt@yahoo.com> Cc: freebsd-questions@freebsd.org, wgnadt@rri-usa.org Subject: Re: help splitting directories Message-ID: <20020403220211.GL848@hades.hell.gr> In-Reply-To: <20020403151902.4403.qmail@web9207.mail.yahoo.com> References: <20020403151902.4403.qmail@web9207.mail.yahoo.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On 2002-04-03 07:19, William Gnadt wrote: > Hi: > > I can generate the following output from find, > > > cd /usr/ports/distfiles > > find . -type f -ls | awk '{print $7,$11}' - > 731400 ./bison-1.34.tar.gz > 20288222 ./emacs-21.2.tar.gz > 226817 ./procmail-3.22.tar.gz > 497341 ./john-1.6.tar.gz > 497716 ./epic4/epic4-1.0.1.tar.bz2 > 216319 ./epic4/epic4pre2-help.tar.gz > 521458 ./links-0.97pre7.tar.gz > 154700 ./micq-0.4.6.p1.tgz > 428767 ./cvsup-snap-16.1f.tar.gz > 121835 ./pidentd-2.8.5.tar.gz > ... > > I'd like some pointers on splitting this list > into smaller lists after the sum of file sizes > reaches a fixed threshold (say ~100MB for copying > to zip disks). You can use awk, with something like: find ... | awk -v splitlen=629145600 -f script.awk where script.awk has stuff like this: % cat script.awk BEGIN { rlen = 0; } { if ((rlen + $1) > splitlen) { print "---"; rlen = 0; } else { rlen += $1; } print $0; } This will insert "---" separators at the right places in the output of find. Then you can split at those separators :) PS: I haven't checked the awk script above, so it might have typos or errors. Use at your own risk. Giorgos Keramidas FreeBSD Documentation Project keramida@{freebsd.org,ceid.upatras.gr} http://www.FreeBSD.org/docproj/ To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-questions" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020403220211.GL848>