perl 创建删除旧日志文件的脚本,允许我传递directory/age/regex参数

fivyi3re  于 2023-06-06  发布在  Perl
关注(0)|答案(1)|浏览(183)

我试图创建一个Perl脚本来删除旧的日志文件。我希望脚本能够做的一件关键事情是允许我传递目录、文件名(比如test.log-*)和文件的年龄的参数。
以下是我目前的想法,虽然我确信这是不正确的,但请给予我任何可能有帮助的反馈。
我想沿着以下方式运行脚本:

script.pl --dir /release/logs --type test.log-* --days 7
#!/usr/perl

use strict;
use warnings;
use Data::Dumper;
use Getopt::Long;

my $file;
my ($dir,$type,$days);
GetOptions( 'dir'   => \$dir,
            'type'  => \$type,
            'days'  => \$days);

foreach my $file (<$dir/$type>){
   if (-M $file < $days) {
       print "\n Deleting log more than '$days' old:".$file;
       unlink $file;
       # or die "\n Failed to remove $file";
   }
}

exit;
1tuwyuhd

1tuwyuhd1#

如果您坚持使用Perl,请查看File::Find。不过,如果你使用的是 *nix盒子,你应该知道find(1)来处理这种常见的任务。
用途:

find /release/logs -name test.log-\* -mtime +7 -delete

如果你想先测试它,去掉-delete标志,它只会打印一个文件列表,否则它会删除。

相关问题