在OSX终端中显示人类可读的文件大小

hoo*_*rEE 27 macos terminal du

在Linux中,我键入du -sh * | sort -rh以显示当前目录中的文件和目录,从最大到最小排序.

我如何在OSX终端中执行此操作,最好不要额外安装任何东西?

Cam*_*ust 35

2年(使用OSX 10.11中的终端)更好地回答这个问题的方法是简单地将-h添加到ls命令以获得人类可读的文件大小.

根据我在以后的OSX版本中的理解,不需要使用brew来安装coreutils.(如果我错了,有人纠正我.)

例如,要获取当前目录中的文件列表,作为单个列列表并显示文件详细信息,请输入:

ls -l
Run Code Online (Sandbox Code Playgroud)

如果您想要人类可读的文件大小,只需添加"h":

ls -hl
Run Code Online (Sandbox Code Playgroud)

要么

ls -lh
Run Code Online (Sandbox Code Playgroud)

在这种情况下," - "后面的字母可以是任何顺序.

如果,如问题细节所述,人们希望文件列表按文件大小排序,顶部最大文件大小,则添加大写"S":

ls -lhS
Run Code Online (Sandbox Code Playgroud)

如果您还想列出不可见文件,请添加"a":

ls -alhS
Run Code Online (Sandbox Code Playgroud)

" - "之后的字母也可以是任何顺序.


如果您经常在当前目录中创建和编辑文件,可能是因为您正在处理任务或项目,则另一种组合是:

ls -hltur
Run Code Online (Sandbox Code Playgroud)

这将在终端窗口的长列表中列出人类可读文件大小格式的文件.

"t"按照上次修改的日期/时间指示文件的排序顺序.

然后,"u"稍微改变一下,以使用上次访问文件的时间,而不是最后修改.

然后,"r"反转列表的顺序,以便最后列出最近访问或"触摸"的文件,位于列表的底部.

完整组合意味着您有一个详细列表,其中包含您最近阅读,打开或修改过的文件,或者您已经运行的流程或其他流程类似地"触摸"了这些文件,所有这些都在列表的底部.

因此,即使当前目录中的列表很长,使得无法在不向上滚动的情况下读取列表的开头,您与之交互的文件可能会在您的下一个文件上方保持可见,准备输入命令行.

这些选项以及更多内容位于ls命令的man(手动)页面中:

man ls
Run Code Online (Sandbox Code Playgroud)

如果您想在上述某种格式中定期列出文件,或者在阅读手册页时选择另一种格式,则可以在.bash_profile文件中添加别名(例如,使用nano打开此文件,并在您执行此操作时)在你的主目录中).

例如,要满足问题原始海报的要求,请打开文件并在新行上添加:

alias lss='ls -hlS'
Run Code Online (Sandbox Code Playgroud)

然后,在保存文件并退出该终端窗口并打开一个新的终端窗口后,在命令行中键入"lss"应该提供您在列出文件时常规查找的内容.

如果您不知道如何使用nano,请先键入打开其man(ual)页面

man nano
Run Code Online (Sandbox Code Playgroud)

该手册页将解释如何使用nano.

要退出手册页并返回可输入命令的位置,请按"q"键.

  • 我的“ls -h”已损坏,它显示一些非常小的文件夹大小,只有几个字节或 kb,而不是 GB。有什么不对?我正在使用莫哈韦沙漠。 (2认同)

小智 20

你没有.除非你安装GNU Coreutils.

以酿造为例

brew install coreutils
Run Code Online (Sandbox Code Playgroud)

然后你得到支持-h选项的gsort命令.


See*_*van 6

下面给出的命令行将列出当前目录中根据大小(从大到小)排序的所有文件和目录。输出格式为

ls -S -lh | awk '{print $5, $9}'
Run Code Online (Sandbox Code Playgroud)

  • 它不会像 `du` 那样调整目录的 *contents* 大小。 (2认同)