如何使用文件::统计模块发现在Perl文件夹的大小?(How to find folder size

2019-10-21 19:15发布

下面是Perl脚本使用查找文件大小File::stat模块:

#!/usr/bin/perl

use strict;
use warnings;

use File::stat;

my $directory = "/home/dinkar/index.html";

my $dirStats  = stat($directory);
my $size      = $dirStats->size;

printf("Size of %s: %d", $directory, $size);
printf("\n");

我得到的文件大小合适的输出,但是这个代码不查找文件夹大小的工作。 它只是需要在文件夹中的文件的数量。 例如,如果有文件夹内八档/home/dinkar ,我得到的文件夹8这是不对的输出。

我想用找到在Perl文件夹的大小File::stat module 。 请帮忙。

Answer 1:

File::stat模块是什么,但更方便的接口,内置的stat操作。 由于stat不提供检索目录的“大小”的方式,也没有File::stat

你通过一个目录的大小的意思是所有文件的大小之和,它包含,或者是递归它下面的目录。 您必须手动计算出,最好的工具可能是File::Find

此程序演示

use strict;
use warnings;
use 5.010;

use File::Find;

my $total;

find(sub { $total += -s if -f }, '/home/dinkar');

say $total;

如果有很多文件被然后测量这可能需要几秒钟才能完成。



Answer 2:

这是Linux,而不是一个Perl的问题:在Linux上的文件夹就是一个包含文件名的文件,因此大小为这些名称只是大小,因为你注意到了。

http://tldp.org/LDP/intro-linux/html/sect_03_01.html

Linux系统中,就像UNIX,使文件和目录没有什么区别,因为目录只是包含的其他文件名的文件

如果你想在目录中的所有文件的大小,你将不得不通过阅读所有文件,总结起来自己 与READDIR 并总结发现大小 使用文件::统计



文章来源: How to find folder size in Perl using File::stat module?
标签: linux perl