删除除最近的perl之外的文件夹中的所有内容

时间:2011-10-20 13:38:05

标签: perl

我正在尝试将一些清理工作整合到我的输出目录中,其中最近的所有文件都将被删除。

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 }

但是我想将最近的那些保留在目录中并删除其余的?有更简单的方法吗?

非常感谢你的建议。

2 个答案:

答案 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。复制这里有点长。