Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何使用File::stat模块在Perl中查找文件夹大小?_Linux_Perl - Fatal编程技术网

Linux 如何使用File::stat模块在Perl中查找文件夹大小?

Linux 如何使用File::stat模块在Perl中查找文件夹大小?,linux,perl,Linux,Perl,下面是使用模块查找文件大小的Perl脚本: 我得到了正确的文件大小输出,但这段代码不适用于查找文件夹大小。它只计算文件夹中的文件数。例如,如果文件夹/home/dinkar中有八个文件,那么我得到的文件夹输出是8,这是错误的 我想使用File::stat module在Perl中查找文件夹大小。请提供帮助。该模块只不过是内置stat操作员更容易访问的界面。因为stat不提供检索目录“大小”的方法,File::stat 您所说的目录大小是指它包含的所有文件的大小之和,或者递归地位于它下面的目录中的

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

我得到了正确的文件大小输出,但这段代码不适用于查找文件夹大小。它只计算文件夹中的文件数。例如,如果文件夹
/home/dinkar
中有八个文件,那么我得到的文件夹输出是8,这是错误的

我想使用
File::stat module
在Perl中查找文件夹大小。请提供帮助。

该模块只不过是内置
stat
操作员更容易访问的界面。因为
stat
不提供检索目录“大小”的方法,
File::stat

您所说的目录大小是指它包含的所有文件的大小之和,或者递归地位于它下面的目录中的所有文件的大小之和。您必须手动计算,最好的工具可能是

本程序演示

use strict;
use warnings;
use 5.010;

use File::Find;

my $total;

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

say $total;
如果有许多文件需要测量,那么这可能需要几秒钟才能完成。

该模块只不过是内置
stat
操作员更容易访问的接口。因为
stat
不提供检索目录“大小”的方法,
File::stat

您所说的目录大小是指它包含的所有文件的大小之和,或者递归地位于它下面的目录中的所有文件的大小之和。您必须手动计算,最好的工具可能是

本程序演示

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中的文件夹只是一个包含文件名的文件,因此正如您所注意到的,大小就是这些名称的大小

Linux系统与UNIX一样,对文件和目录没有区别,因为目录只是一个包含其他文件名的文件


如果你想知道目录中所有文件的大小,你必须用readdir读取所有文件,然后用File::stat汇总找到的文件大小。这是一个linux问题,而不是Perl问题:linux中的文件夹只是一个包含文件名的文件,因此大小就是这些文件名的大小,正如你所注意到的

Linux系统与UNIX一样,对文件和目录没有区别,因为目录只是一个包含其他文件名的文件


如果你想知道目录中所有文件的大小,你必须用readdir读取所有文件,然后用File::stat汇总找到的文件大小。OP询问如何使用Perl查找目录的总大小。我不认为这是一个Linux问题。他们使用的模块是
File::stat
,而不是
File::stat
。不幸的是,它们是两个不同的模块(这意味着不能同时在Windows上安装这两个模块)。更正了输入错误。好的,关于Linux目录的误解只是一个问题。OP询问了如何使用Perl查找目录的总大小。我不认为这是一个Linux问题。他们使用的模块是
File::stat
,而不是
File::stat
。不幸的是,它们是两个不同的模块(这意味着不能同时在Windows上安装这两个模块)。更正了输入错误。好的,关于Linux目录的误解只是一个问题。我们不能用File::stat模块代替File::find模块吗?不。我解释了原因。当模块选择错误时,为什么您如此渴望使用
File::stat
?这是家庭作业吗?不,谢谢。我刚才澄清了。对不起,我没有看到您的解释-f是文件,-d是目录。因此,您的程序演示如何查找文件大小而不是文件夹大小?正如我所说,“文件夹大小”通常是指它包含的文件大小的总和。如果您指的是目录节点本身占用的空间,那么我帮不了您。我们不能使用File::stat module而不是File::find module查找吗?不。我解释了原因。当模块选择错误时,为什么您如此渴望使用
File::stat
?这是家庭作业吗?不,谢谢。我刚才澄清了。对不起,我没有看到您的解释-f是文件,-d是目录。因此,您的程序演示如何查找文件大小而不是文件夹大小?正如我所说,“文件夹大小”通常是指它包含的文件大小的总和。如果你是指目录节点本身占用的空间,那么我帮不了你。