如何根据大于2天的修改时间删除给定目录下的所有文件和目录

时间:2014-11-04 02:16:50

标签: python perl

我使用time()函数来计算纪元时间,并使用乘数和天数来找出它们之间的差异大于修改时间。

但是我无法获取指定路径下的文件和文件夹列表以及如何删除所有非空的子目录。

2 个答案:

答案 0 :(得分:3)

根据我从python文档中读到的内容,以下内容不等同,但它会很接近:

do {
   opendir(my $dh, $path)
      or die("Can't open directory \"$path\": $!\n");

   my @files = grep !/^\.\.?\z/, readdir($dh);

   closedir($dh)
      or die("Error reading directory \"$path\": $!\n");

   @files
}

一些差异:

  • 无法检查readdir是否失败。
  • 抛出的错误消息不同。
  • 抛出的异常不会是不存在的OSError类。
  • Python OSError类中包含的异常可能无法捕获Perl异常。
  • 更多?我不懂Python。

如果你已经指定了你真正想要做的事情而不是说你想要相当于其他语言的功能,那会更好,因为

  • 两种语言具有完全相同功能的可能性不大,所以你让我们猜测你真正想要的是什么。
  • 你实际上可能已经搜索过了。

答案 1 :(得分:1)

你走在正确的轨道上(虽然你粘贴的片段是非法的Perl,例如它没有分号)。请记住,Perl只是在目录中徘徊,包括特殊的"。"和" .."条目,而os.listdir没有(见文档)。

当然,Perl是Perl,有不止一种方法可以做到这一点,例如:你可以使用像glob或File :: Find这样的东西。