根据修改日期过滤文件夹中的文件

时间:2016-06-06 04:45:38

标签: perl

有包含大量文件的文件夹。我想选择今天在Perl中创建或修改的文件。我不想遍历文件夹中的所有文件。 例如,我在一个文件夹中有50个文件,今天添加了10个文件,而不是我今天只想选择10个文件添加到文件夹中。

任何帮助对我来说都很棒。提前致谢

1 个答案:

答案 0 :(得分:1)

您无法创造时间 - Unix无法跟踪它。

您可以拥有修改时间(或ctime,即"更改时间")。

但是如果不循环遍历所有文件,你就无法做到这一点 - 因为至少,你需要stat来检查它们的属性。

如果你需要递归 - File::Find::Rule是工作的工具(正如Ikegami在评论中所建议的那样)。

如果你没有,那么就像-M测试(或stat

一样简单
foreach my $file ( glob "/path/*.ext" ) { 
    next unless (stat($file))[9] < time() - 84600; 
}

或者:

next unless -M $file > 1; 

或者您可以应用grep来过滤glob

foreach my $file ( grep { -M < 1 } glob "/path/to/*.ext" ) {

但不要幻想 - 在每种情况下,都有一个循环来测试每个文件,并执行stat来检查它的年龄。