为什么du和Perl的-s为文件大小赋予不同的值?

为什么du和Perl的-s为文件大小赋予不同的值?,第1张

概述根据评论更新: 我有outlog.txt文件,其中包含多个文件名,例如:2345_535_Dell& HP_3PAR_DEAL.txt,类似地有很多文件名但不是文件所在的实际文件夹,所以在代码中我将文件名附加到folderpath以获取实际的文件位置.现在,我希望获得outlog.txt中存在的所有文件的磁盘使用量以及outlog.txt中存在的所有文件的总磁盘使用量. 我尝试了两种方法perl 根据评论更新:

我有outlog.txt文件,其中包含多个文件名,例如:2345_535_Dell& HP_3PAR_DEAL.txt,类似地有很多文件名但不是文件所在的实际文件夹,所以在代码中我将文件名附加到folderpath以获取实际的文件位置.现在,我希望获得outlog.txt中存在的所有文件的磁盘使用量以及outlog.txt中存在的所有文件的总磁盘使用量.

我尝试了两种方法perl -s和my($size)= split(”,du`“$folderpath / $_”`)但这两种方法都给了我不同的值,当我使用du而不是得到一些数值,但它没有给我单位,有没有一种方法,我可以让人类可读而不使用-h选项,因为它不能在我的系统上工作?

背景资料

我的目标是获取文件的大小,目前我使用perl -s来获取文件大小.我也尝试过du并且获得相同文件大小的不同值.我无法理解这是如何工作的.

问:为什么du和perl -s给出不同的大小值?他们内部如何工作?哪两个不同的值更准确?另外,我不确定为什么du -h filename给我一个非法的表达式错误:

bash-2.03$du -h test.txt/usr/bin/du: illegal option -- husage: du [-a][-d][-k][-r][-o|-s][-L] [file ...]

码:

my $folderpath = 'the_path';open my $IN,'<','path/to/infile';my $total;while (<$IN>) {    chomp;    my $size = -s "$folderpath/$_";    print "$_ => $size\n";    $total += $size;}print "Total => $total\n";

礼貌:RickF

更新:

问:
如何获取每个文件的磁盘使用值而不是文件大小,这意味着我如何获得每个文件的du值而不是文件的perl -s值?

OS信息
uname:SunOS
uname -v:Generic_117350-39

更新的代码:根据大脑的方法,但仍然du值只打印为零,而不是实际值,任何建议?

更新:
如果我使用我的($size)= split(”,du“$folderpath / $_”);比我得到du值但它给了我一些数字,如何在不使用-h选项的情况下将其变为人类可读?

#!/usr/bin/perl use strict; use warnings;my $folderpath = '/Project/upload';open my $IN,'outlog.txt';my $total;while (<$IN>) {    chomp;    #my( $block_size,$blocks ) = ( stat( "$_" ) )[11,12];    #my $du_size = $block_size * $blocks;    my ($size) = split(' ',`du "$folderpath/$_");     #my $size = -s "$folderpath/$_";    print "$_ => $size\n";    $total += $size;}print "Total => $total\n";
解决方法 du报告实际的磁盘使用情况,Perl的-s报告文件的大小.因此,如果文件长度为四个字节,则其大小为4个字节,但磁盘使用量为4千字节(取决于文件系统的设置方式).

您还会看到sparse files的大小不同.稀疏文件占用的空间少于它们声称的空间.

总结

以上是内存溢出为你收集整理的为什么du和Perl的-s为文件大小赋予不同的值?全部内容,希望文章能够帮你解决为什么du和Perl的-s为文件大小赋予不同的值?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1267215.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存