下面是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
。 请帮忙。
该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;
如果有很多文件被然后测量这可能需要几秒钟才能完成。
这是Linux,而不是一个Perl的问题:在Linux上的文件夹就是一个包含文件名的文件,因此大小为这些名称只是大小,因为你注意到了。
http://tldp.org/LDP/intro-linux/html/sect_03_01.html
Linux系统中,就像UNIX,使文件和目录没有什么区别,因为目录只是包含的其他文件名的文件
如果你想在目录中的所有文件的大小,你将不得不通过阅读所有文件,总结起来自己 与READDIR 并总结发现大小 使用文件::统计 。