【发布时间】:2010-04-21 08:35:08
【问题描述】:
我正在使用 Perl stat() 函数来获取目录及其子目录的大小。我有一个大约 20 个父目录的列表,其中有几千个递归子目录,每个子目录都有几百条记录。 脚本的主要计算部分如下所示:
sub getDirSize {
my $dirSize = 0;
my @dirContent = <*>;
my $sizeOfFilesInDir = 0;
foreach my $dirContent (@dirContent) {
if (-f $dirContent) {
my $size = (stat($dirContent))[7];
$dirSize += $size;
} elsif (-d $dirContent) {
$dirSize += getDirSize($dirContent);
}
}
return $dirSize;
}
脚本执行了一个多小时,我想让它更快。
我尝试使用 shell du 命令,但 du 的输出(转换为字节)不准确。而且这也相当耗时。
我正在开发 HP-UNIX 11i v1。
【问题讨论】:
-
为什么说du的输出不准确呢?那么什么对你来说是准确的呢? du 是一个 C 程序,它旨在使用相对较好的算法为您获取文件和文件夹的大小。我相信它在执行时会比自定义 Perl 脚本更快。
标签: perl filesystems