在 Linux 中,我输入
du -sh * | sort -rh
显示当前目录中的文件和目录,从最大到最小排序。
如何在 OSX 终端中执行此操作,最好不要安装任何额外的东西?
两年后(使用 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”键。
你不知道。除非你安装了 GNU Coreutils。
以酿造为例
brew install coreutils
然后你会得到支持 -h 选项的 gsort 命令。
下面给出的命令行将列出当前目录中的所有文件和目录,按大小(从大到小)排序。输出格式为
ls -S -lh | awk '{print $5, $9}'
我只是想使用 zsh 来扩展上面针对 Mac 的答案。 所以正确的方法是使用
du -sh directory_name/
。
如果您使用
ls -lh
,您可能会注意到您的文件夹/目录大小约为 4KB。这是因为它显示磁盘上用于存储该特定文件夹/目录的元数据的空间大小,而不是其内容。
祝你有美好的一天
根据接受的答案,将
ls
与各种选项一起使用。就我个人而言,我有以下 bash 别名设置,我发现它非常有用:
~/.bash_profile
或 ~/.bashrc
# list files with human-readable size including hidden files
_la='ls -lah'
alias la=$_la
# la + sort by size
alias las=$_la'S'
该变量提供了一种简单的方法来构建
las
别名,只需附加 S
选项即可。