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

Tags:

Linux

Bash

Du