Linux find large files

September 16, 2010

How do you find large files or directories on your disk in freebsd, unix, linux ?
Linux find large files examples; find large files on your disk in *nix.

All *nix systems

List total size of each directory/file at current path level

du -sk * | sort -rn | head

Example output:

[root@centos6 /]# du -sk * | sort -rn | head
20089940    total
4628944 root
2102076 usr
723940  opt
493228  var
211744  lib
196708  2012-09-28--00-00
183804  2012-09-15--00-00
174968  2012-09-27--00-00
173756  2012-09-21--00-00
[root@centos6 /]# 

Redhat/CentOS

Human Readable, List largest 20 files on disk

FS='./'; resize; clear; echo "== Server Time: =="; date; echo -e "\n== Hostname: =="; hostname; echo -e "\n== Filesystem Information: =="; df -h ${FS} ; echo -e "\n== Largest Directories: =="; du -hcx --max-depth=2 ${FS} 2>/dev/null | grep -P '^([0-9]\.*)*G(?!.*(\btotal\b|\./$))' | sort -rnk1,1 | head -10 | column -t; echo -e "\n== Largest Files: =="; find ${FS} -mount -ignore_readdir_race -type f -exec du {} + 2>&1 | sort -rnk1,1 | head -10 | awk 'BEGIN{ CONVFMT="%.2f"; }{ $1=( $1 / 1024 )"M"; print; }' | column -t; echo -e "\n== Largest Files Older Than 30 Days: =="; find ${FS} -mount -ignore_readdir_race -type f -mtime +30 -exec du {} + 2>&1 | sort -rnk1,1 | head -10 | awk 'BEGIN{ CONVFMT="%.2f"; }{ $1=( $1 / 1024 )"M"; print; }' | column -t;

Find files over 50MB

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

Awesome View

FS='./';resize;clear;date;df -h $FS; echo "Largest Directories:"; du -hcx --max-depth=2 $FS 2>/dev/null | grep [0-9]G | sort -grk 1 | head -15 ;echo "Largest Files:"; nice -n 19 find $FS -mount -type f -print0 2>/dev/null| xargs -0 du -k | sort -rnk1| head -n20 |awk '{printf "%8d MB\t%s\n",($1/1024),$NF}'

Commands Compatible with almost all Unix/Linux Distros

Find large files in /

cd /
du -sh *

return all files over 1MB

find . -type f -size +1024 -exec ls -ahl {} \;

return all files over 100MB

find . -type f -size +102400 -exec ls -ahl {} \;

return all files over 300MB

find . -type f -size +307200 -exec ls -ahl {} \;

On Ubuntu

find files over 100MB

find / -type f -size +100000k -exec ls -lh {} \;