在perl中删除超过12小时的文件夹

在perl中删除超过12小时的文件夹,perl,Perl,我需要删除超过12小时的文件夹 这是我的代码,当然不完整。我不知道如何在perl中查看每个文件夹的“年龄” #!/usr/bin/perl -w use v5.10.0; use File::Copy; use POSIX 'strftime'; use File::Temp; my $lapso = 12; #### is the limit of "age" in hours my $hour = str

我需要删除超过12小时的文件夹

这是我的代码,当然不完整。我不知道如何在perl中查看每个文件夹的“年龄”

#!/usr/bin/perl -w

use v5.10.0;                                      
use File::Copy;
use POSIX 'strftime';
use File::Temp;



my $lapso  = 12;  #### is the limit of "age" in hours
my $hour = strftime("%H", localtime(time)); 
say "$hour";
my $limit = strftime "%Y%m%d$H", localtime( time - $lapso * 3_600 );
say "$limit"; #I get the limit of data 

my $dir    = '/home/sim/data/';
opendir(DIR,"$dir");
@files = readdir(DIR);
foreach $file (@files){
print $file, "\n";
}
closedir(DIR)
我不需要比较文件夹的数据和$limit


有什么帮助吗?

-M
以天为单位返回文件/目录的时间,因此

print $dir, "\n" if 0.5 < -M $dir;
打印$dir,“\n”如果0.5<-M$dir;
请参阅文档:

用于检索文件夹的修改时间,并将其与当前时间进行比较,以查看差异是否超过12小时


如果要删除的文件夹不是空的,您可能还对模块感兴趣。

您真的想使用Perl吗?那么,好吧P

find . -type f -mmin +$((12*60)) -print0 | perl -n0e unlink

另外:
严格
警告
是强烈建议的。
-M
返回文件修改后的时间。它不会回到它的年龄。这是不可能的,因为操作系统没有记录文件创建的时间。@ikegami没有类似于
stat-f%c
的可移植perl版本,因为不同的操作系统版本无法区分inode“birthdime”和“changetime”?@G.Cito,这在我的GNU/linux上甚至不起作用。但是是的,有些系统上根本没有这些信息。我认为创建日期存在于Windows世界中,但在其他地方很少见。我认为它可能是可选的,并不总是POSIX的实现部分,但它似乎是特定于文件系统的。我很确定NTFS和ZFS支持“生日”(甚至可能是带有可选标志的UFS),但不是所有的文件系统工具都可以读取它。无论如何,我都离题了,所以我将不再离题:-)