Thanks for the code. However it does not works as expected. My testing shows
that the program will only unlink folders if  the structure name of the
folders falls exactly on the range.

Say today is 16 August 2006. If I have only have this folder

/var/log/project1/2006/08/08/8231.tgz


The program does not works, unless I change the variable $days exactly to 8.
What I need is a program that could unlink all folders except for today's.

On 6/23/06, John Ackley <[EMAIL PROTECTED]> wrote:



Khairul Azmi wrote:
> Hi all,
> I have this problem. There is a script that stores log files into
folders
> that follows structure of the following
>
> YYYY/MM/DD
>
> eg..
>
> /var/log/projects/2006/06/20/8231.tgz
> /var/log/project1/2006/06/21/1432.tgz
> /var/log/projects/2006/06/22/1756.tgz
> /var/log/projects/2006/06/23/1756.tgz
>
> Now I want to write a script that would erase all logs that has been
> stored
> except for the log for the current day. For the above example, since
> today
> is 23 June 2006, the code will erase log files in folders 2006/06/20/
and
> 2006/06/21/ only. Can somebody give ideas on how to do this. This
> script is
> to be ran once a day.
>
> Thanks in advance.
>
> mie
>
assuming, as you state, "erase log files" (not directories)
assuming 2 days prior as per your example
assuming all earlier log files
try this which is easy to modify if assumptions are not correct


#! /usr/bin/perl

use strict;
use warnings;

use Date::Manip;

my $directory;
my $days = 2;
while( -d
    ($directory =
        UnixDate(DateCalc('today',"$days ago"),
            '/var/log/projects/%Y/%m/%d')) ) {
    unlink "$directory/*";
    $days++;
}

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>



Reply via email to