根据自己的大小查找最胖的目录

Find most fat directories by it's own size

我想按大小降序列出大多数胖目录。 'Directory own size' 表示目录的大小不包括其所有子目录的大小。

例如我们有目录结构:

    /tmp/D1
            |-- 5m.file
            |-- D2
            |   |-- 2m.file
            |   `-- D4
            |       `-- 4m.file
            `-- D3
                `-- 3m.file

通过执行命令并传递 /tmp/D1 作为参数,我想得到像

这样的结果
    5m      /tmp/D1
    4m      /tmp/D1/D2/D4
    3m      /tmp/D1/D3
    2m      /tmp/D1/D2

du -Sh . | sort -rh | head -n 10

+x 仅限当前文件系统

du -Shx . | sort -rh | head -n 10

您可以将 du-S 选项一起使用

来自 man 页面

-S, --separate-dirs do not include size of subdirectories

$ du -Sh /foo/bar/temp2/ | sort -rh

84K     /foo/bar/temp2/
40K     /foo/bar/temp2/tempo
4.0K    /foo/bar/temp2/opt/logs/merchantportal
4.0K    /foo/bar/temp2/opt/logs
4.0K    /foo/bar/temp2/opt
4.0K    /foo/bar/temp2/folder
4.0K    /foo/bar/temp2/bang

现在使用 -s 选项以正常方式检查,包括所有子目录。

$ du -sh /foo/bar/temp2/opt
12K     /foo/bar/temp2/opt

这是子文件夹 /foo/bar/temp2/opt/logs/merchantportal/foo/bar/temp2/opt/logs 和基本文件夹本身的大小总和

-h根据man页面以人类可读的格式格式化大小。如果您强制想要以 1 MB 的块格式化输出,您可以使用选项 du -Sm