是否有可能在Unix中使用ls列出子目录的总大小及其所有内容,而不是通常的4K(我假设)只是目录文件本身?

total 12K
drwxrwxr-x  6 *** *** 4.0K 2009-06-19 10:10 branches
drwxrwxr-x 13 *** *** 4.0K 2009-06-19 10:52 tags
drwxrwxr-x 16 *** *** 4.0K 2009-06-19 10:02 trunk

在翻遍了手册之后,我一无所获。


当前回答

Du -sk * | sort -n将按大小对文件夹排序。当你想要清理空间时很有帮助。

或du -sh * | sort -h用于人类可读模式

其他回答

这些都是很好的建议,但我用的是:

du -ksh * | sort -n -r

-ksh确保文件和文件夹以人类可读的格式列出,并以兆字节、千字节等为单位。然后你对它们进行数值排序,然后反转排序,让大的放在前面。

这个命令唯一的缺点是,计算机不知道千兆字节比兆字节大,所以它只会按数字排序,你经常会发现这样的列表:

120K
12M
4G

只是要仔细观察单位。

该命令也适用于Mac(而sort -h则不能)。

嗯,最好的方法是使用这个命令:

du -h -x / | sort -hr >> /home/log_size.txt

然后你就可以在你的服务器上获得所有大小的文件夹。轻松帮助您找到最大的尺寸。

使用实例递归显示当前目录的文件和子目录大小。

du -h .

要显示相同大小的信息,但不递归打印它们的子目录(可能是一个巨大的列表),只需使用——max-depth选项:

du -h --max-depth=1 .

以人类可读的格式列出当前目录中最大的目录:

Du -sh * | sort -hr

一个更好的限制行数的方法是

Du -sh * | sort -hr | head -n10

在哪里可以增加-n标志的后缀来限制列出的行数

示例:

[~]$ du -sh * | sort -hr
48M app
11M lib
6.7M    Vendor
1.1M    composer.phar
488K    phpcs.phar
488K    phpcbf.phar
72K doc
16K nbproject
8.0K    composer.lock
4.0K    README.md

这样读起来更方便:)

我总是使用du -sk (-k标志,以千字节为单位显示文件大小)代替。