我试图创建一个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;
1条答案
按热度按时间1tuwyuhd1#
如果您坚持使用Perl,请查看
File::Find
。不过,如果你使用的是 *nix盒子,你应该知道find(1)
来处理这种常见的任务。用途:
如果你想先测试它,去掉
-delete
标志,它只会打印一个文件列表,否则它会删除。