How to find large file size on linux

Often time, you may need to know which file contains large file size, and delete it to save space. Here’s a code pattern to show you how to find large file size on Linux :


find {directory} -type f -size +100000k -exec ls -lh {} \; | awk '{ print $9 ": " $5 }' 

1. File size >= 100MB

Find all files that have a size >= 100MB, from root folder and its sub-directories.


sudo find / -type f -size +100000k -exec ls -lh {} \; | awk '{ print $9 ": " $5 }' 

Result


/Applications/Diablo: 2.3G
/Applications/Diablo: 203M
/Applications/Diablo: 978M
/Applications/Diablo: 1.4G
/Applications/Diablo: 1.3G
/Applications/Diablo: 1.5G
/Applications/iPhoto.app/Contents/Resources/PointOfInterest.db: 242M

2. File size >= 50MB

Find all files that have a size >= 50MB, from folder ‘/Users/mkyong’ and its sub-directories.


find /User/mkyong -type f -size +100000k -exec ls -lh {} \; | awk '{ print $9 ": " $5 }' 

Result


/Users/mkyong/Downloads/command_line_tools_for_xcode_june_2012.dmg: 147M
/Users/mkyong/Downloads/ubuntu-12.04-desktop-i386.iso: 701M
/Users/mkyong/Downloads/X15-65805.iso: 3.0G
/Users/mkyong/Library/Preferences/com.google.code.sequel-pro.plist: 104M
Note
Above command tested for Ubuntu and Mac OSX.

References

  1. Unix find command

7 comments on “How to find large file size on linux

  1. Hi,

    Thanks for your page and tips 🙂

    there is a typo in the second example:
    You say:
    File size >= 50MB
    But the command says: -size +100000

    To match File size >= 50MB the command
    should say:-size +50000

    Cheers,
    Carles

  2. Here is a script to display the largest files on your system.

    http://www.thegeekscope.com/linux-script-to-find-largest-files/

    Following is the sample output of the script:

    # sh get_largest_files.sh / 5

    [SIZE (BYTES)] [% OF DISK] [OWNER] [LAST MODIFIED ON] [FILE]

    56421808 0% root 2012-08-02 14:58:51 /usr/lib/locale/locale-archive
    32464076 0% root 2008-09-18 18:06:28 /usr/lib/libgcj.so.7rh.0.0
    29147136 0% root 2012-08-02 15:17:40 /var/lib/rpm/Packages
    20278904 0% root 2008-12-09 13:57:01 /usr/lib/xulrunner-1.9/libxul.so
    16001944 0% root 2012-08-02 15:02:36 /etc/selinux/targeted/modules/active/base.linked

    Total disk size: 23792652288 Bytes
    Total size occupied by these files: 154313868 Bytes [ 0% of Total Disc Space ]

    *** Note: 0% represents less than 1% ***

  3. When you use find with size option. I guess you are assuming that file size has to be more than +100000k which will is not the solution to the topic you are covering
    Topic is: “How to find large file size on linux (Solution)”

    So this will give only the file larger than size specified.
    find / -type f -size +100000k …

    The solution that might get the results.
    find . -type f -exec du {} \; | sort -rn | head -10

    so the command says:- find all files and run then run du (estimate file space usage) then sort as per the size and get me 10 largest. I might like to know largest file even if it few kb’s …

    The only problem I am working on is this will take long time to get me results. Any ideas on how to make this command faster ??

  4. Ops, just now I noticed, the “sort” part won’t work quite right though. 1.000 GB files will appear at the top, followed by 100 MB files, going down until you reach 900MB file sizes. It still helps, as long as you have that in mind.

  5. Thanks. Specially useful if you’re browsing a cifs mount, on which graphic file size visualizers like that konqueror plugin (I guess) don’t work.

    Just one suggestion, I think it goes better with the awk part as:

    awk ‘{ print $5 “: ” $8 }’ | sort

    with the file size first, followed by the file name (which in my case would be number 9, not 8 BTW), and then followed by “sort”, so you have it ordered by file size, which may be useful in helping to deal with the largest files first.

    1. Nop, “|sort” will not work as you expect. Size is considered as text, not as integer, so sort will give :
      129M
      34M
      4G
      5M

Leave a Comment

Your email address will not be published. Required fields are marked *