How to Find Most Used Disk Space Directories and Files in Linux

As a Linux administrator, you must periodically check which files and folders are consuming more disk space. It is very necessary to find unnecessary junk and free it up from your hard disk.

This brief tutorial describes how to find the largest files and folders in the Linux file system using the du (disk usage) and find commands. If you want to learn more about these two commands, then head over to the following articles.

How to Find Biggest Files and Directories in Linux

Run the following command to find out the top biggest directories under /home partition.

# du -a /home | sort -n -r | head -n 5
Find Largest Directories in Linux
Find Largest Directories in Linux

The above command displays the biggest 5 directories of my /home partition.

Find Largest Directories in Linux

If you want to display the biggest directories in the current working directory, run:

# du -a | sort -n -r | head -n 5
Find Biggest Directories Only
Find the Biggest Directories Only

Let us break down the command and see what says each parameter.

  • du command: Estimate file space usage.
  • a : Displays all files and folders.
  • sort command : Sort lines of text files.
  • -n : Compare according to string numerical value.
  • -r : Reverse the result of comparisons.
  • head : Output the first part of the files.
  • -n : Print the first ‘n’ lines. (In our case, We displayed the first 5 lines).

Some of you would like to display the above result in a human-readable format. i.e. you might want to display the largest files in KB, MB, or GB.

# du -hs * | sort -rh | head -5
Find Top Directories Sizes in Linux
Find Top Directories Sizes in Linux

The above command will show the top directories, which are eating up more disk space. If you feel that some directories are not important, you can simply delete a few sub-directories or delete the entire folder to free up some space.

To display the largest folders/files including the sub-directories, run:

# du -Sh | sort -rh | head -5
Find Largest Folder and Sub directories
Find the Largest Folder and Subdirectories

Find out the meaning of each option using in above command:

  • du command: Estimate file space usage.
  • -h : Print sizes in human-readable format (e.g., 10MB).
  • -S : Do not include the size of subdirectories.
  • -s : Display only a total for each argument.
  • sort command : sort lines of text files.
  • -r : Reverse the result of comparisons.
  • -h : Compare human readable numbers (e.g., 2K, 1G).
  • head : Output the first part of the files.

Find Out Top File Sizes Only

If you want to display the biggest file sizes only, then run the following command:

# find -type f -exec du -Sh {} + | sort -rh | head -n 5
Find Top File Sizes in Linux
Find Top File Sizes in Linux

To find the largest files in a particular location, just include the path beside the find command:

# find /home/tecmint/Downloads/ -type f -exec du -Sh {} + | sort -rh | head -n 5
OR
# find /home/tecmint/Downloads/ -type f -printf "%s %p\n" | sort -rn | head -n 5
Find Top File Size in Specific Location
Find the Top File Size in a Specific Location

The above command will display the largest file from /home/tecmint/Downloads directory.

That’s all for now. Finding the biggest files and folders is no big deal. Even a novice administrator can easily find them. If you find this tutorial useful, please share it on your social networks and support TecMint.

If you read this far, tweet to the author to show them you care. Tweet a thanks
Ravi Saive
I am an experienced GNU/Linux expert and a full-stack software developer with over a decade in the field of Linux and Open Source technologies

Each tutorial at TecMint is created by a team of experienced Linux system administrators so that it meets our high-quality standards.

Join the TecMint Weekly Newsletter (More Than 156,129 Linux Enthusiasts Have Subscribed)
Was this article helpful? Please add a comment or buy me a coffee to show your appreciation.

28 thoughts on “How to Find Most Used Disk Space Directories and Files in Linux”

      • @Gilles,

        Thanks for the tip, but it didn’t work on my end. Here is the output of the command…

        $ du -s * | sort -rn | awk '{system("ls  -ld $2") ; exit}'
        
        drwxr-xr-x 33 tecmint tecmint 4096 Nov 16 10:46 .
        
        Reply
        • Sorry for the two mistakes.

          First, if running as root, wildcard ("*") expansion includes “dot directories“, and current dir (".") would always be the biggest one since it includes all others.

          And there was also a mistake in the awk statement.

          So this should do the trick:

          $ find . -mindepth 1 -maxdepth 1 -type d | xargs du -s * | sort -rn | awk ‘{system(“ls -ld ” $2) ; exit}’

          Reply
          • @Gilles,

            Thanks again, but the command giving an error, see below.

            $ find . -mindepth 1 -maxdepth 1 -type d | xargs du -s * | sort -rn | awk '{system("ls -ld  "  $2)  ; exit}'
            
            du: cannot access './VirtualBox': No such file or directory
            du: cannot access 'VMs': No such file or directory
            drwxr-xr-x 17 tecmint tecmint 184320 Nov 16 14:52 Downloads
            

            Could you run the above command in your Linux setup, and share the output?

          • @Ravi Sorry for replying here; the “reply link” is missing from your latest comment.

            > “but the command giving an error, see below”

            sorry again, remove the "*" from "xargs du -s *".
            The fixed command is :

            $ find $HOME -mindepth 1 -maxdepth 1 -type d | xargs du -s | sort -rn | awk '{system("ls -ld " $2) ; exit}'

  1. It appears that if you use -h (human readable) with du, the sort gets confused as it doesn’t interpret the decimal unit prefix (i.e. the G, M, or K) properly, and you get the largest displayed numeric value.

    For example: 9G, 10K, 8K, 4M, 7G would sort to 10K, 9G, 8K, 7G, 4M.

    I noticed this when I got the following results:

    # du -h /data.source/ | sort -n -r | head -n 5
    1020K   /data.source/mod_tile/default/9/0/0/1/176
    1020K   /data.source/mod_tile/default/10/0/0/1/178
    1016K   /data.source/mod_tile/default/11/0/0/35/65
    996K    /data.source/mod_tile/default/9/0/0/16/170
    992K    /data.source/mod_tile/default/9/0/0/1/160
    
    # du /data.source/ | sort -n -r | head -n 5
    680595148       /data.source/
    597114072       /data.source/pgsql
    597114068       /data.source/pgsql/9.6
    597114060       /data.source/pgsql/9.6/data
    595032120       /data.source/pgsql/9.6/data/base
    
    Reply
  2. Hello Ravi,

    My questioned is to find the big file for particular date says we have thousand files of in folder with different date and need to find the biggest file of december 2016.

    Reply

Got something to say? Join the discussion.

Thank you for taking the time to share your thoughts with us. We appreciate your decision to leave a comment and value your contribution to the discussion. It's important to note that we moderate all comments in accordance with our comment policy to ensure a respectful and constructive conversation.

Rest assured that your email address will remain private and will not be published or shared with anyone. We prioritize the privacy and security of our users.