linux – 以兆字节显示文件夹使用情况的正确方法

前端之家收集整理的这篇文章主要介绍了linux – 以兆字节显示文件夹使用情况的正确方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用du -bs来计算文件夹大小.
du -bs /folder

结果是96342835字节…所以MB是(/ 1024/1024)91,87MB.

好的,但是当我使用的时候

du -hs /folder

结果不同. 99MB
要么

du -s taxikondrat.cz/

100980 KBytes = 98,61MB

我尝试了不同的方法.在每一个我得到不同的结果.例如.

find -type f -print0 | xargs -0 stat --print='%s\n' | awk '{total+=$1} END {print total}'

我得到96059200字节,所以91,60MB

ls -ARgo "$@" | awk '{q += $3} END {print q}'

96338739字节,87 MB.舍入后相同,但在字节上差别不大.

作为蛋糕上的樱桃是谷歌:)

那么,这是真的吗?为什么会出现这种差异,哪种方法最准确?

解决方法

你正在比较苹果和橘子.

请注意,ls -s将根据文件中实际数据的长度给出文件的大小.

默认情况下,du命令将提供基于大小的磁盘使用情况.由于磁盘空间是以块的形式分配的,并且文件的长度几乎不是块大小的整数倍,因此最终会得到一个仅部分填充数据但不能被其他文件使用的块.
换句话说,如果文件系统的块大小为512字节,则1字节长度的文件将占用磁盘上的512字节,与511字节的文件相同.一个513字节的文件将占用2个块和1024个字节的磁盘空间.

总和du文件磁盘使用率几乎总是大于ls -s文件文件大小的总和,特别是当你有许多(小)文件和/或非常大的块大小时.

使用du -b开关不会计算块,但行为类似于ls -s:

-b equivalent to --apparent-size --block-size=1
--apparent-size
print apparent sizes,rather than disk usage; although the apparent size is usually smaller,it may be larger due to holes in (‘sparse’) files,internal frag‐
mentation,indirect blocks,and the like
-h,--human-readable
print sizes in human readable format (e.g.,1K 234M 2G)

du -sh会将块总数转换为人类可读格式,
du -bh将以人类可读的格式打印表观尺寸的总和.

在我的Maildir中,许多小文件有很大不同:

$du -bs cur/
84088436    cur/
$du -s cur/
91800   cur/
$du -sh cur/
90M cur/
$du -bh cur/
81M cur/

编辑关于转换为人类可读输出和兆字节,请不要忽视SI十进制前缀与二进制倍数的人类可读的整体“争议”,​​1000的幂与1024的幂.

有关GNU实用程序(如ls和du)如何显示它们的信息,请参阅本页的背景信息:https://www.gnu.org/software/coreutils/manual/html_node/Block-size.html.

du -h输出中的大写字母M代表1,048,576字节.

猜你在找的Linux相关文章