Finding the Biggest Files and Folders in Linux Command Line
Quick tutorial to show you how to find the biggest files on your Linux machine using a few commands that you may already be familiar with du, sort, and head.
This is a quick tutorial to show you how to find the biggest files on your Linux machine using a few commands that you may already be familiar with du, sort, and head.
Here's a quick summary:
To find the 10 biggest folders in current directory:
du -h | sort -hr | head -n 10
To find the 10 biggest files and folders in current directory:
du -ah | sort -hr | head -n 10
Read the rest of the article to get a detailed explanation of these commands.
How to find the biggest folders in Linux?
The du command is used for getting the disk usage. Sort command sorts the data as per your requirement. The head command displays the top lines of a text input source.
This is just one combination for getting the biggest files and directories in Linux command line. There can be several other ways to achieve the same result.
What happens if you run these three commands together without options? Your output probably won’t be very useful.
When you run these commands, unless specified with du, everything will run automatically using the current working directory as the source file.
Sort without options arranges items in numerical order, but this behavior is a little strange. 100 is considered less than 12 because 2 > 0. That’s definitely not what we want.
Head here defaults to displaying the first 10 items. Depending on the directory you want to analyze, you can tailor this to find large files quickly.
christopher@linuxhandbook:~$ du | sort | head
100 ./.local/share/evolution/addressbook
108 ./.mozilla/firefox/jwqwiz97.default-release/datareporting
112 ./.local/share/gvfs-metadata
12 ./.cache/fontconfig
12 ./.cache/gnome-software/screenshots/112x63
12 ./.cache/thumbnails/fail
12 ./.config/dconf
12 ./.config/evolution
12 ./.config/gnome-control-center/backgrounds
12 ./.config/ibus
Adding Options
So let’s look at what might be more typical options.
Adding -n
to sort command means that items will be sorted by numeric value. Adding -r
means that the results will be reversed. This is what we want when searching for the largest number.
I’m also going to add -5
to limit our results further than the default for head. This value is something that you should decide based on what you know about the system.
You may want to expand the value to a number greater than 10, or omit it entirely if there are many large files you are trying to filter. Otherwise, you may run it, delete several files, but still have space issues.
Okay, let’s put it all together and see what happens.
christopher@linuxhandbook:~$ du | sort -nr | head -5
1865396 .
1769532 ./Documents
76552 ./.cache
64852 ./.cache/mozilla
64848 ./.cache/mozilla/firefox
That’s better, you can quickly see where the largest files are. You can do better, though. Let’s clean it up with some more options.
Human-Readable Output
The human options for certain commands help present numbers in a way that is familiar to us. Let’s try adding that to the du command.
christopher@linuxhandbook:~$ du -h | sort -nr | head -5
980K ./.local/share/app-info
976K ./.local/share/app-info/xmls
824K ./.cache/thumbnails
808K ./.cache/thumbnails/large
804K ./.local/share/tracker
Corrected Human-Readble Output
Wait a second… Those numbers don’t make any sense. No, they don’t because You have only changed the content to human-readable for the du command. Sort has its own built-in function for human-readable numeric sort with -h. Both must be used to get the desired output. You can run into these kinds of issues often in Linux.
It’s important to experiment and make sure that your results “make sense” before using a command a specific way.
Let’s try it again.
christopher@linuxhandbook:~$ du -h | sort -hr | head -5
1.8G .
1.7G ./Documents
75M ./.cache
64M ./.cache/mozilla/firefox/jwqwiz97.default-release
64M ./.cache/mozilla/firefox
That’s more like it.
Where are the largest files?
You can tell from the output that the Documents folder contains some larger files, but if you switch to that folder and run our command again, you don’t get the largest file. You get this:
christopher@linuxhandbook:~/Documents$ du -h | sort -hr | head -5
1.7G .
This is just telling us what you already know. The current directory, referred to as .
, has 1.7G worth of files. That isn’t helpful if you’re trying to find single, unusually large files.
You need to add another flag to du for this task. Using option -a, you can get the output that we’re looking for. Let’s try it.
christopher@linuxhandbook:~/Documents$ du -ah | sort -hr | head -5
1.7G .
1.1G ./1gig-file.file
699M ./doc.tar
2.9M ./photo-of-woman-wearing-turtleneck-top-2777898.jpg
1.4M ./semi-opened-laptop-computer-turned-on-on-table-2047905.jpg
Conclusion
Did you enjoy this guide to finding large files in Linux? I hope all of these tips taught you something new.
If you like this guide, please share it on social media. If you have any comments or questions, leave them below.
Christopher works as a Software Developer in Orlando, FL. He loves open source, Taco Bell, and a Chi-weenie named Max.