You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何ls命令显示部分目录大小不为4K?

为何ls命令显示部分目录大小不为4K?

嘿,这个问题问得很接地气,我来给你唠明白其中的门道~

首先得搞懂一个核心点:Linux/Unix里的目录本质是一种特殊文件,它存的不是文件内容,而是一堆「目录条目」——每个条目记录着文件名对应的inode编号,还有一些小元数据。

咱们平时看到的4.0K,其实是多数文件系统(比如ext3/ext4)的默认数据块大小。当目录里的条目足够多,需要占用至少一个完整数据块时,ls -l就会显示这个块的大小4.0K。

那像你例子里的room_old显示138字节是咋回事?这得益于现代文件系统的inline目录特性:当目录的内容特别少(总大小远小于一个4K块),系统会直接把这些目录条目塞进目录自身的inode预留空间里,不用单独分配数据块。这时候ls -l显示的就是目录内容的实际字节数,而不是块大小。

你想啊,room_old里估计也就一两个文件,对应的目录条目加起来才138字节,完全装得进inode的预留空间,自然就不用占4K的块了。

要是你想验证的话,可以敲个ls -s命令看看块数:room_old的块数大概率是0或者1(不同系统显示略有差异),而那些显示4.0K的目录,块数会是1(对应一个4K块)。

备注:内容来源于stack exchange,提问作者randall

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 09:52:42