有包含大量文件的文件夹。我想选择今天在Perl中创建或修改的文件。我不想遍历文件夹中的所有文件。 例如,我在一个文件夹中有50个文件,今天添加了10个文件,而不是我今天只想选择10个文件添加到文件夹中。
任何帮助对我来说都很棒。提前致谢
答案 0 :(得分:1)
您无法创造时间 - Unix无法跟踪它。
您可以拥有修改时间(或ctime
,即"更改时间")。
但是如果不循环遍历所有文件,你就无法做到这一点 - 因为至少,你需要stat
来检查它们的属性。
如果你需要递归 - File::Find::Rule
是工作的工具(正如Ikegami在评论中所建议的那样)。
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
来检查它的年龄。