Date: Wed, 13 Feb 2013 23:42:34 -0600 From: Tim Daneliuk <tundra@tundraware.com> To: Robert Bonomi <bonomi@mail.r-bonomi.com> Cc: freebsd-questions@freebsd.org Subject: Re: Fun Scripting Problem Message-ID: <511C794A.10001@tundraware.com> In-Reply-To: <201302132113.r1DLD6DX003167@mail.r-bonomi.com> References: <201302132113.r1DLD6DX003167@mail.r-bonomi.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On 02/13/2013 03:13 PM, Robert Bonomi wrote: > >> Date: Wed, 13 Feb 2013 12:27:31 -0600 >> From: Tim Daneliuk <tundra@tundraware.com> >> Subject: Fun Scripting Problem >> >> I know how to do this in Python, but I really want to do it in >> straight Bourne shell. I have some ideas, but I thought I'd >> give you folks a crack at this Big Fun: >> >> a) You have a directory of files - say they're logs - generated >> at nondeterministic intervals. You may get more than one a day, >> more than one a month, none, or hundreds. >> >> b) To conserve space, you want to keep the last file generated >> in any given month (the archive goes back for an unspecified >> number of years), and delete all the files generated prior to >> that last file in that same month. >> >> c) Bonus points if the problem is solved generally for either files >> or directories generated as described above. >> >> These are not actually logs, and no, I don't think logrotate can >> do this ... or can it? > > here's a one-liner: > rm ` \ > stat -f "%SB %B %N" * \ > | sort -k5nr \ > | cut -c1-7,17-20,32- \ > | awk 'BEGIN {a="";b=0;c=0} $1==a && $2==b && $3=c {print $4;}{a=$1;b=$2;c=$3}' \ > ` > > This selects on creation date. change the B (both of them) in the stat > call to use a different timestamp Thanks to all that took the time. Interesting responses. It will be fun to cook up my own version. -- ---------------------------------------------------------------------------- Tim Daneliuk tundra@tundraware.com PGP Key: http://www.tundraware.com/PGP/
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?511C794A.10001>