104
104
用Bash中的一行命令以列表形式显示每个子目录的大小?
我想以列表的形式得到一个目录列表和它们的大小,就像你做ls -l
.
问题是,有没有一个单行命令可以做到这一点?我看到别人有很长的命令,就是为了输出这个。那实在是太长了。
有什么命令可以做到这一点,或者说有什么命令的组合可以方便的输入?du -h
给出了,但它显示的是所有的子文件夹,这不是我想要的,只有当前的目录文件夹。
我想以列表的形式得到一个目录列表和它们的大小,就像你做ls -l
.
问题是,有没有一个单行命令可以做到这一点?我看到别人有很长的命令,就是为了输出这个。那实在是太长了。
有什么命令可以做到这一点,或者说有什么命令的组合可以方便的输入?du -h
给出了,但它显示的是所有的子文件夹,这不是我想要的,只有当前的目录文件夹。
试试这个
du -h --max-depth=1
oliver@home:/usr$ sudo du -h --max-depth=1
24M ./include
20M ./sbin
228M ./local
4.0K ./src
520M ./lib
8.0K ./games
1.3G ./share
255M ./bin
2.4G .
如果 --max-depth=1
对你的口味来说太长了,你也可以尝试使用:
du -h -s *
这使用-s
(--summarize
),默认情况下只打印文件夹本身的大小。通过传递当前工作目录中的所有元素(*
),会产生与--max-depth=1
类似的输出。
oliver@cloud:/usr$ sudo du -h -s *
255M bin
8.0K games
24M include
520M lib
0 lib64
228M local
20M sbin
1.3G share
4.0K src
区别很微妙。前一种方法会显示当前工作目录的总大小,以及包含在其中的所有文件夹的总大小……但深度不超过1。
后一种方法会单独计算所有通过的项目的总大小。因此,它在输出中包含了符号链接lib64
,但不包括隐藏的项目(其名称以点开始)。它还缺少当前工作目录的总大小,因为那不是作为参数传递的。
打印磁盘上所有文件文件夹和隐藏文件的大小。
el@dev /home/el $ du -sh `ls -a`
258M .
265M ..
4.0K .classpath
258M .git
4.0K .gitignore
9.0K nbactions.xml
12K README
20K .README.swp
4.0K run.sh
23K XmlPostPropagate.php
值得一提的是NCurses Disk Usage shell命令。
Ncdu是一个带有ncurses界面的磁盘使用分析器。它的设计是为了在远程服务器上找到空间占用者,在那里你没有一个完整的图形设置,但它是一个有用的工具,即使在普通的桌面系统上。Ncdu的目标是快速、简单和易于使用,应该可以在任何安装了ncurses的类似POSIX的最小环境中运行。