这是我目前以递归方式删除文件和目录的方式
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”调用?
答案 0 :(得分:10)
使用File::Path中的rmtree
。除了可移植之外,它还使用Perl的内置unlink而不是每次需要删除目录时启动整个shell,这就是你现在正在做的事情。