是否有可能在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
在翻遍了手册之后,我一无所获。
是否有可能在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 -sh *
简写版:
du --summarize --human-readable *
解释:
du:磁盘使用率
-s:显示每个指定文件的摘要。(相当于-d 0)
-h: "人类可读"输出。使用单位后缀:Byte, Kibibyte (KiB), Mebibyte (MiB), Gibibyte (GiB), Tebibyte (TiB)和Pebibyte (PiB)。(BASE2)
其他回答
我遇到了一个类似于Martin Wilde描述的问题,在我的例子中,在使用rsync镜像后比较两个不同服务器上的相同目录。
我没有使用脚本,而是向du添加了-b标志,它以字节为单位计算大小,据我所能确定,消除了两台服务器上的差异。您仍然可以使用-s -h来得到一个可理解的输出。
嗯,最好的方法是使用这个命令:
du -h -x / | sort -hr >> /home/log_size.txt
然后你就可以在你的服务器上获得所有大小的文件夹。轻松帮助您找到最大的尺寸。
以人类可读的格式列出当前目录中最大的目录:
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 -h .
要显示相同大小的信息,但不递归打印它们的子目录(可能是一个巨大的列表),只需使用——max-depth选项:
du -h --max-depth=1 .
du -S
du还有另一个有用的选项:-s,——separate-dirs告诉du不包含子目录的大小——在某些情况下很方便。
例1 -仅显示目录中的文件大小:
du -Sh *
3,1G 10/CR2
280M 10
例2 -显示了目录下的文件大小和子目录:
du -h *
3,1G 10/CR2
3,4G 10