这些天我正在学习一些基本的 UNIX 命令。今天是ls
。我想按大小对结果进行排序。
我试过
ls -lS /Applications/Utilities
结果没有排序。我试过
ls -lS ~/Downloads
结果是排序的。
知道为什么吗?为什么我不能对特定文件夹的结果进行排序?
这些天我正在学习一些基本的 UNIX 命令。今天是ls
。我想按大小对结果进行排序。
我试过ls -lS /Applications/Utilities
结果没有排序。
我试过ls -lS ~/Downloads
结果是排序的。
知道为什么吗?为什么我不能对特定文件夹的结果进行排序?
/Applications/Utilities
闻起来像 macOS。IIRC macOS 上的目录通常包含目录,而不是常规文件。目录是一种特殊类型的文件,其中包含一些不透明格式的文件名列表。目录文件的大小通常会随着其中文件的数量而增长,但并非总是如此。例如,我不知道 macOS 文件系统,但在许多其他文件系统上,目录条目占用的空间在删除时通常不会被回收(当相应的文件从目录中取消链接时)。
目录文件也经常以块的形式分配。我怀疑所有这些目录都具有相同的大小,因为它们包含的条目很少,所以只有一个块(可能类似于 4KiB),这可以解释为什么
ls
按名称对它们进行排序(作为解决联系的一种方式)。总而言之,目录的大小并不真正相关。
如果您想根据其中所有文件的累积磁盘使用情况(递归)对目录列表进行排序,您可以这样做:
(假设这些目录名称不包含换行符)。