【问题标题】:List all directories sorted by size in descending order列出所有按大小降序排列的目录
【发布时间】:2024-01-11 13:06:01
【问题描述】:

我需要按大小降序对当前目录的所有目录进行排序。

我试过了

du -sh * | sort -rg

它按大小列出所有文件夹,但它只是按文件夹大小按值列出。但是,它不是排序更正。 100 MB 目录应在 200 KB 之前列出。

任何帮助都将不胜感激。

【问题讨论】:

  • 在您的sort 命令中尝试使用-h 而不是-g
  • 它在 MAC 中对我不起作用。得到以下问题。杜 -sh * | sort -rh sort: 无效选项 --h 尝试使用 `sort --help' 获取更多信息。
  • 这很奇怪,我在发表评论之前在 mac 和 ubuntu 上尝试过。
  • 是的.. 不确定,但排序中缺少 -h 选项 --help
  • 哪个版本的mac?

标签: linux bash shell sh


【解决方案1】:

-g 用于浮点数。对于人类可读的输出,使用人类可读的排序:

du -sh * | sort -rh

如果您有 coreutils 的 numfmt 实用程序,您可以使用带有 numfmt 格式的数字排序:

du -s * | sort -rn | numfmt --to=iec -d$'\t' --field=1

【讨论】:

  • 它在 MAC 中对我不起作用。得到以下问题。杜 -sh * | sort -rh sort: 无效选项 --h 尝试使用 `sort --help' 获取更多信息。
  • 呃。也许只尝试数字:du -s * | sort -rn
  • 是的,它可以部分工作。但它没有列为 MB 和 KB。它没有显示人类可读字符的大小。它以简单的总字节显示
  • 你有 numfmt 吗?
  • numfmt 将 mb 显示为 kb。这是预期的吗?
【解决方案2】:

我更喜欢直接比较字节。

du -b * | sort -nr

du -b 报告字节。

sort -n 按数字排序。显然,-r 反转了。

我的 /tmp 在我清理它之前 -

104857600       wbxtra_RESIDENT_07202018_075931.wbt
815372  wbxtra_RESIDENT_07192018_075744.wbt
215310  Slack Crashes
148028  wbxtra_RESIDENT_07182018_162525.wbt
144496  wbxtra_RESIDENT_07182018_163507.wbt
141688  wbxtra_RESIDENT_07182018_161957.wbt
56617   Notification Cache
20480   ~DFFA6E4895E749B423.TMP
16384   ~DF543949D7B4DF074A.TMP
13254   AdobeARM.log
3614    PhishMeOutlookReporterLoader.log
3448    msohtmlclip1/01
3448    msohtmlclip1
512     ~DF92FFF2C02995D884.TMP
28      ExchangePerflog_8484fa311d504d0fdcd6c672.dat
0       WPDNSE
0       VPMECTMP
0       VBE

【讨论】:

    【解决方案3】:

    不要让机器处理人类数据:

    du -s * | sort -rg
    

    【讨论】:

      最近更新 更多