以下是使用File::stat
模块查找文件大小的Perl脚本:
#!/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,这是错误的。
我想使用File::stat module
在Perl中找到文件夹大小。请帮忙。
答案 0 :(得分:5)
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;
如果要测量的文件很多,则可能需要几秒钟才能完成。
答案 1 :(得分:-1)
这是一个linux,而不是一个Perl问题:linux中的文件夹只是一个包含文件名的文件,因此大小就是这些名称的大小,正如您所注意到的那样。
http://tldp.org/LDP/intro-linux/html/sect_03_01.html
Linux系统,就像UNIX一样,在文件和目录之间没有区别,因为目录只是一个包含其他文件名称的文件
如果你想要目录中所有文件的大小,你必须通过读取所有文件 with readdir 并总结找到的文件与File :: stat来总结它们。 德尔>。