In this article, we will explain how you can list files, sorted by size, in a directory tree. This includes directory listing both in the graphical user interface and the command line.
We have performed the procedures and commands mentioned in this article on a Debian 10 Buster system. You can, however, replicate these steps on most Linux distros.
Sorting Files in a File Manager
The file manager that you are using has a default preference, mostly alphabetical, to sort files and folders in a directory. You can, however, set custom preferences so that it sorts your files based on their size. Nautilus is the default file manager for Linux Debian and Ubuntu. This is how you can sort the files, size-wise, on Nautilus in Debian.
Method1: Open the File Manager and then click on the downward arrow located in the top bar, as follows:
This will present a list of options on the basis of which you can sort the files and folders in a directory. Click on the Size option in order to sort the files on the basis of their decreasing size.
Method 2: You can also set the Preferences of your file manager in a way that it displays files and folders based on a given criterion. Click on the options button from the top bar as follows:
Then, click on the Preferences option that will open the Preferences view with the ‘Views’ tab open. Click on the List Columns tab that lets you set the order of information that appears in the list view of the File Manager.
Select the Size option and drag it to the top so that this criterion is the top preference to sort your files and folders.
Sorting Files in the Command Line
The ls command in Linux lets you list files and their information based on the criteria you specify in the form of various flags and their options. If no criteria is specified, the ls command sorts all entries alphabetically. Here, we will use the ls command, with different flags, to make it list files and folders on the basis of their size.
You can open the Debian command line, the Terminal, by searching for it from the Application Launcher search as follows:
You can then use the -S option as follows to sort the files on the basis of size, largest first:
Another option is to use the sort flag with the ls command using the following syntax:
Where ‘WORD’ can be used to specify the following options:
- none-instead of the -U flag
- size- instead of the -S flag
- time- instead of the -t flag
- version- instead of the -v flag
- extension- instead of the -X flag
Now that we have to sort our files on the basis of size, we will replace WORD with size as follows:
Here are a few options that will make the size sorting make more useful for you:
Print a long listing format
In order to print a list of size-sorted files in a lengthwise format, you can use the -l flag with the already described -S flag:
You can see in the above image how the list is not displayed in a lengthwise format.
Reverse print a size-sorted list
If you want the ls command to print the lowest sized files first, you can use the -r flag along with the -S flag:
The above command prints a lengthwise, revere size-sorted list of files and folders in a directory.
Print a more human-readable list of sorted files
The -h flag, when used with -S and -l, prints sizes like like 1K 234M 2G etc. which are more human readable. Here is how you can sort the files size-wise and make the list more human readable:
Exclude directories when printing a size-sorted list
If you only want to list the files in a directory, and not the folders, sorted by size, you can make use of the grep command as follows:
You can see that this command only lists files in a directory along with all the other information.
These were various ways through which you can not only sort the files on the basis of size, but also customize the listing some more by using some other commonly used flags. So whether you are on the Linux UI or the command line, you can now make the file listing much more informative.