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.
Above command tested for Ubuntu and Mac OSX.
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 ??
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
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% ***
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.
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.
Nop, “|sort” will not work as you expect. Size is considered as text, not as integer, so sort will give :
129M
34M
4G
5M
Thanks for your invaluable inputs.