Display each sub-directory size in a list format using one line command in Bash?
Try this
du -h --max-depth=1
Output
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 .
Alternative
If --max-depth=1
is a bit too long for your taste, you can also try using:
du -h -s *
This uses -s
(--summarize
) and will only print the size of the folder itself by default. By passing all elements in the current working directory (*
), it produces similar output as --max-depth=1
would:
Output
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
The difference is subtle. The former approach will display the total size of the current working directory and the total size of all folders that are contained in it... but only up to a depth of 1.
The latter approach will calculate the total size of all passed items individually. Thus, it includes the symlink lib64
in the output, but excludes the hidden items (whose name start with a dot). It also lacks the total size for the current working directory, as that was not passed as an argument.
You probably want to see the directories ordered by size:
$ du -hs * | sort -hr
856M lib
746M share
612M lib64
312M src
267M java
239M bin
179M sbin
173M local
93M i686-w64-mingw32
72M libexec
26M include
20M puppet
772K X11R6
20K man
4.0K games
4.0K etc
0 tmp
Print the sizes of all files folders and hidden files on disk:
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