在perl中删除超过12小时的文件夹
我需要删除超过12小时的文件夹 这是我的代码,当然不完整。我不知道如何在perl中查看每个文件夹的“年龄”在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
#!/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),但不是所有的文件系统工具都可以读取它。无论如何,我都离题了,所以我将不再离题:-)