Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
PerlMonks  

Re: del files that is 7 days or older

by dvergin (Monsignor)
on Feb 15, 2001 at 02:37 UTC ( [id://58480]=note: print w/replies, xml ) Need Help??


in reply to del files that is 7 days or older

You will want to familiarize yourself more with the system() function. It returns the exit status of the given command, not what goes to STDOUT. For that you would use back-ticks or qx//. Also your two chomp lines have normal single-quotes where you need back-ticks.

Generally, I try to solve a problem in terms of the approach proposed by the questioner. But in this case, you have started down a rocky road that will involve the date::manip module or something similar in order to correctly handle months as alpha abbreviations (Jan, Feb, etc.) instead of numbers. It's do-able but more bother than it is worth probably. Here's a more perlish solution:

#!/usr/bin/perl -w use strict; my $file; my $dir_spec = '/home/archive/logs/old'; opendir(LOGDIR, $dir_spec) or die "Can't open $dir_spec: $!\n"; while ( defined($file = readdir(LOGDIR)) ) { if (-M "$dir_spec/$file" > 7) { unlink("$dir_spec/$file") or die "Can't delete $dir_spec/$file: $!\n"; } } closedir(LOGDIR);
The key to this is the file test operator -M which returns the number of days old the given file is. Just the thing you needed.

Replies are listed 'Best First'.
Re: -M
by grahm (Novice) on Jun 29, 2002 at 18:56 UTC
    I'm curious as to how the -M operator works. Since Unix doesn't keep track of file creation dates, does -M check for the last modified? So in the example above would the given file be deleted if it wasn't modified in the last 7 days? I'm also assuming that one could use the -M to test directories as well. Is this true? :]
      Take a look at stat. All the --something operators are just frontends for this function. UN*X keeps track of last access, last modification, and last inode change (often confused with creation time).

      -M looks at the mtime (modification time), and subtracts $^T (see perlvar). A better choice might be -C, which looks at ctime (inode change time). Still, that too just looks at the last time you changed something about the file "metadata": creation, permissions, and the like.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://58480]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others learning in the Monastery: (6)
As of 2024-04-24 09:57 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found