如何在perl中有效删除长列表/文件和目录数组

时间:2011-06-07 23:34:10

标签: perl xargs rm

这是我目前以递归方式删除文件和目录的方式

foreach my $row(keys %$rows)
{
    my $md5 = $rows->{$row}->{'md5'};
    my $path = "/some/path/jpg/".substr( $md5, 0, 3 )."/$md5";

    `rm -rf $path`;
    print "removed - ".$path."\n";
}

需要删除数十万个文件/目录,所以除了为每个文件/目录调用“rm -rf”之外,我希望看到更好的解决方案。

也许在数组中组合一个文件/目录列表然后将这个数组传递给一个“rm -rf”调用?

1 个答案:

答案 0 :(得分:10)

使用File::Path中的rmtree。除了可移植之外,它还使用Perl的内置unlink而不是每次需要删除目录时启动整个shell,这就是你现在正在做的事情。