【问题标题】:Show human-readable file sizes in OSX terminal在 OSX 终端中显示人类可读的文件大小
【发布时间】:2014-10-16 18:29:39
【问题描述】:

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

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

【问题讨论】:

    标签: macos terminal du


    【解决方案1】:

    你没有。除非您安装 GNU Coreutils。

    以 brew 为例

    brew install coreutils
    

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

    【讨论】:

    • 谢谢 :) 这就是我要找的东西!
    • 注意:默认情况下,命令安装为 g____。所以 gsort -h。
    • 我想要这个而不是讨论的ls 变体,所以我可以与 du 一起使用。例如cd ~; du -sh * | gsort -h
    【解决方案2】:

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

    ls -S -lh | awk '{print $5, $9}'
    

    【讨论】:

    • 它不会像du 那样调整目录的内容。
    【解决方案3】:

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

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

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

    ls -l
    

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

    ls -hl
    

    或

    ls -lh
    

    在这种情况下,“-”后面的字母可以是任意顺序。

    如果如问题详情所述,希望文件列表按文件大小排序,最大文件大小在顶部,则添加大写“S”:

    ls -lhS
    

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

    ls -alhS
    

    同样,“-”之后的字母可以是任意顺序。


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

    ls -hltur
    

    这会以人类可读的文件大小格式列出文件,在终端窗口下方的长列表中。

    “t”指示文件按上次修改日期/时间排序。

    然后“u”会稍微改变它以使用文件上次访问的时间,而不是上次修改的时间。

    “r”然后反转列表的顺序,以便最近访问或“触摸”的文件最后列出,在列表的底部。

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

    因此,即使您当前目录中的列表很长,以至于如果不向上滚动就无法再读取列表的开头,您与之交互的文件很可能会立即在您的下一个文件上方保持可见,准备输入,命令行。

    这些选项以及更多选项位于 ls 命令的手册(手册)页中:

    man ls
    

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

    例如,要满足问题原始发布者的要求,请打开文件并在新行中添加:

    alias lss='ls -hlS'
    

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

    如果你不知道如何使用 nano,首先通过键入来调出它的手册页

    man nano
    

    手册页将解释如何使用 nano。

    要退出手册页并返回可以输入命令的位置,请按“q”键。

    【讨论】:

    • 我的ls -h 坏了,它显示了一些非常小的文件夹大小,只有几个字节或 kb,而不是 gb。有什么不对?我正在使用 Mojave。
    • @MinhNghĩa 确保您使用 ls 命令列出的文件夹中的文件大小不是小文件,即正确显示。我没有运行该操作系统,目前仍在使用 OSX 10.11,因此无法确认问题。请注意,Apple 计划在下一个 OSX 版本中迁移到 zsh,而不是 bash。
    • 是的,我使用 zsh,ls -lah 返回我所有文件夹的大小都是 4K :|
    • @MinhNghĩa 在 zsh 下检查 ls 的手动文件(man)并不表示对 zsh 下的 ls 有任何更改,尽管 zsh 的稍后更新可能会这样做。您是否在您认为自己所在的文件目录中应用 ls 或其他。我已经在 OSX 10.11.6 中使用 zsh 安装在 zsh 下运行 ls - ahl,并且我的文件大小显示为应有的大小。如果您最近开始使用 Oh My Zsh,可能会出现冲突,但我认为不太可能。如果您发现问题并因此回答,请发布。我会感兴趣的。
    • 我可以建议您将这个问题作为一个新问题发布到 stackoverflow 上,而不是在这里寻求答案。
    猜你喜欢
    • 2013-02-17
    • 1970-01-01
    • 1970-01-01
    • 2018-03-17
    • 1970-01-01
    • 2010-11-08
    • 2019-04-01
    • 2017-08-09
    • 1970-01-01
    相关资源
    最近更新 更多