Re: Bash script question
On Thu, Dec 07, 2006 at 03:41:53PM -0600, Ron Johnson wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> On 12/07/06 15:12, Almut Behrens wrote:
> > On Thu, Dec 07, 2006 at 12:16:54PM -0600, Nate Bargmann wrote:
> >> I have a directory of files that are created daily using
> >> filename-`date +%Y%m%d`.tar.gz so I have a directory with files whose
> >> names advance from filename-20061201.tar.gz to filename-20061202.tar.gz
> >> to filename-20061203.tar.gz and so on. Based on the date in the
> >> filename, I would like to delete any than are X days older than today's
> >> date. So, I'm not interested in the actual created/modified date, just
> >> the numeric string in the name.
> >
> > ... what, no Perl one-liner yet?? :)
> >
> > So, here it is, the line noise version that should do the job:
> >
> > $ perl -MTime::Local -e 'unlink grep {/-(\d{4})(\d\d)(\d\d)/; timelocal(0,0,0,$3,$2-1,$1)<time-864000} glob "*.tar.gz"'
> >
> > This would delete all of your .tar.gz files older than 10 days (or
> > 864000 secs), in the current directory.
>
> OP specifically noted:
> I'm not interested in the actual created/modified date
yes, I know... It does in fact use the date specification from the filename
(extracted by the /-(\d{4})(\d\d)(\d\d)/ regex).
Reply to: