How to easily list all directories and sort them by size on Linux

List All Directories And Sort Them By Size On Linux

The ls command on Linux is used to list all the contents of any directory. However, to display more options and to sort all the directories by size, we have to use a different command known as du. In this tutorial, we will discuss this command in detail, and we will also take a look at how can we incorporate different tools such as the head, tail and sort utilities to make it easier for us to read the output.

List all directories with the du command

The du command by default lists all the directories and subdirectories recursively, so unless you want to spam your Terminal with a huge output, you should use this command with several options, especially if the current directory has a lot of subdirectories.

You can run the du command like this :

du -h

Here, -h option signifies ‘Human Readable’, therefore the output of the command will be in a format which is easier to read by the user.

Listing All The Directories Using The Du Command
Listing All The Directories Using The du Command

As you can see, the output of the command is still not sorted by size, and we have the size of all the directories in a recursive manner. To limit the command so that it does not go deep into the directory structure, you can use –max-depth=N option along with the du command.

du -h --max-depth=1
Listing Directories Only At Depth 1
Listing Directories Only At Depth 1

Sorting directories by size

To list all directories and sort them by size, you can pipe the output of this command and pass it through the sort utility like this :

du -h --max-depth=1 | sort -h
Listing All The Directories And Sorting Them By Size
Listing All The Directories And Sorting Them By Size

Note that you don’t have to be in a directory to check its size. You can specify any directory like this :

du -h --max-depth=1 /path/to/directory
Listing Size Of A Custom Directory
Listing Size Of A Custom Directory

To only list, let’s say, the 10 biggest directories, you can use the du command along with the head command. We will also use the tail command to avoid listing the size of the current directory like this :

du -h --max-depth=1 2> /dev/null | sort -hr | tail -n +2 | head
Listing The Largest 10 Directories
Listing The Largest 10 Directories

Summary

We hope you were able to use this incorporate this command in your shell script and in your daily life to list all directories and sort them by size, you can also alias this long command and use the alias instead so that you don’t have to type out a long command every time you want to check the size of current subdirectories.

Resources

du command – Man Page