我正在尝试将一些清理工作整合到我的输出目录中,其中最近的所有文件都将被删除。
my @files = grep{ -f && -t } glob($outputdir);
349
350 my @expected_file = grep { /SequenomComparisonSummary\_(\d+)\.txt/} @files;
351 foreach my $file(@expected_file){
352
353 unlink $file;
354 warn "Removing file $file\n";
355 }
但是我想将最近的那些保留在目录中并删除其余的?有更简单的方法吗?
非常感谢你的建议。
答案 0 :(得分:3)
怎么样:
unlink $file if -M $file > 7; # unlink if older than one week
(或者您可以将-M > 7
用作grep
条件的一部分。)
聚苯乙烯。您-t
条件中的grep
可能没有按照您的想法行事。来自the docs:
“
-t
Filehandle打开了一个tty。”“如果省略该参数,则测试
$_
,但-t
除外,它测试STDIN。”
因此代码中的-t
正在检查STDIN
是否是终端,我认为这不是您真正想要检查的终端。
答案 1 :(得分:0)
我在我的网站上发布了一个脚本,以便小心地(在Windows环境中)执行此操作并允许干运行。该脚本位于http://www.billruppert.com/2009/05/deleting-old-files.html。复制这里有点长。