【问题标题】:Perl delete all files in a directoryperl 删除目录中的所有文件
【发布时间】:2014-08-02 02:01:48
【问题描述】:

如何在 Perl 中删除所有目录中的文件(不删除目录)?

我的主机最多只允许 250,000 个“文件”,而我的 /tmp 文件夹会在所有会话 cookie 进行的情况下快速填充 250,000 个 qouta。在这种情况下,我无法删除 /tmp 文件夹。我只被允许删除里面的文件。

编辑

FTP 客户端和文件管理器并不完全想打开该文件夹...我认为这是因为其中包含大量文件..

【问题讨论】:

  • 为什么需要 Perl 来删除文件? rm 还不足以完成这项工作吗?
  • 会话文件名是什么样的?
  • @j.w.r 随机字符串名称“2HU3DO09ASDDQ1L”等
  • 如果您收到Argument list too long 错误,请使用find,如下所示:find /where/ever -exec rm -rf {} \;
  • @RedCricket 这也会删除文件夹。

标签: perl


【解决方案1】:
my $errors;
while ($_ = glob('/tmp/* /tmp/.*')) {
   next if -d $_;
   unlink($_)
      or ++$errors, warn("Can't remove $_: $!");
}

exit(1) if $errors;

【讨论】:

    【解决方案2】:

    你可以使用它。您需要使用 glob 来删除文件:

    unlink glob "'/tmp/*.*'";
    

    需要这些额外的撇号来处理带有空格的文件名作为一个字符串。

    【讨论】:

    • 不会删除没有“.”的文件。不会删除带有前导“.”的文件。没有错误报告。
    • 在 Windows 上,不需要额外的撇号 ( unlink glob "C:/BECPWIN/Backup/*.*"; )
    猜你喜欢
    • 2010-11-05
    • 2014-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多