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