How to check file and directory size in Linux
ls and stat are command-line tools in Linux you can use to display information about files and folders, including their sizes. du is another tool you can use to display size information, which is a dedicated tool created just for that purpose.
du can be used to find files or folders taking huge space in your system. You can use the info to delete offending files and folders and prevent your storage from becoming full. It is, however, not a tool to view disk usage information.
Related: How to check disk size and usage in Linux
Related: How to clear disk space on Linux
Steps to check the size of files and folders in Linux:
-
Check file size of a file.
$ du Documents/random.txt 16 Documents/random.txt
Default size unit is in 1K block.
-
Display file size in human readable format.
$ du -h Documents/random.txt 16K Documents/random.txt
Size will automatically be displayed in K (Kilobytes), M (Megabytes), G (Gigabytes) or T (Terabytes) unit.
-
Show the size of all folders recursively from within a directory.
$ du -h Documents/ 21M Documents/Finance 4.0K Documents/Secret/Empty 40K Documents/Secret 21M Documents/
-
Set depth level for recursive folder size.
$ du -h --max-depth=1 Documents/ 21M Documents/Finance 40K Documents/Secret 21M Documents/
-
Show size of folders including total.
$ du -hc Documents/ 21M Documents/Finance 4.0K Documents/Secret/Empty 40K Documents/Secret 21M Documents/ 21M total
-
Show total size of folders or directories.
$ du -hs Documents/ 21M Documents/
-
Show system folder size using sudo.
$ sudo du -hs /var/cache/ [sudo] password for user: 117M /var/cache/
-
Show non-recursive directory size using wildcard.
$ sudo du -hs /var/cache/* 6.2M /var/cache/apparmor 16M /var/cache/app-info 75M /var/cache/apt 6.1M /var/cache/cracklib 32K /var/cache/cups 5.2M /var/cache/debconf 40K /var/cache/dictionaries-common 2.7M /var/cache/fontconfig 2.1M /var/cache/fwupd 0 /var/cache/fwupdmgr 60K /var/cache/ldconfig 2.1M /var/cache/man 8.0K /var/cache/PackageKit 8.0K /var/cache/private 4.0K /var/cache/realmd 2.2M /var/cache/snapd
-
Use du command with more available options to check file and directory size in Linux.
$ du --help Usage: du [OPTION]... [FILE]... or: du [OPTION]... --files0-from=F Summarize disk usage of the set of FILEs, recursively for directories. Mandatory arguments to long options are mandatory for short options too. -0, --null end each output line with NUL, not newline -a, --all write counts for all files, not just directories --apparent-size print apparent sizes, rather than disk usage; although the apparent size is usually smaller, it may be larger due to holes in ('sparse') files, internal fragmentation, indirect blocks, and the like -B, --block-size=SIZE scale sizes by SIZE before printing them; e.g., '-BM' prints sizes in units of 1,048,576 bytes; see SIZE format below -b, --bytes equivalent to '--apparent-size --block-size=1' -c, --total produce a grand total -D, --dereference-args dereference only symlinks that are listed on the command line -d, --max-depth=N print the total for a directory (or file, with --all) only if it is N or fewer levels below the command line argument; --max-depth=0 is the same as --summarize --files0-from=F summarize disk usage of the NUL-terminated file names specified in file F; if F is -, then read names from standard input -H equivalent to --dereference-args (-D) -h, --human-readable print sizes in human readable format (e.g., 1K 234M 2G) --inodes list inode usage information instead of block usage -k like --block-size=1K -L, --dereference dereference all symbolic links -l, --count-links count sizes many times if hard linked -m like --block-size=1M -P, --no-dereference don't follow any symbolic links (this is the default) -S, --separate-dirs for directories do not include size of subdirectories --si like -h, but use powers of 1000 not 1024 -s, --summarize display only a total for each argument -t, --threshold=SIZE exclude entries smaller than SIZE if positive, or entries greater than SIZE if negative --time show time of the last modification of any file in the directory, or any of its subdirectories --time=WORD show time as WORD instead of modification time: atime, access, use, ctime or status --time-style=STYLE show times using STYLE, which can be: full-iso, long-iso, iso, or +FORMAT; FORMAT is interpreted like in 'date' -X, --exclude-from=FILE exclude files that match any pattern in FILE --exclude=PATTERN exclude files that match PATTERN -x, --one-file-system skip directories on different file systems --help display this help and exit --version output version information and exit Display values are in units of the first available SIZE from --block-size, and the DU_BLOCK_SIZE, BLOCK_SIZE and BLOCKSIZE environment variables. Otherwise, units default to 1024 bytes (or 512 if POSIXLY_CORRECT is set). The SIZE argument is an integer and optional unit (example: 10K is 10*1024). Units are K,M,G,T,P,E,Z,Y (powers of 1024) or KB,MB,... (powers of 1000). Binary prefixes can be used, too: KiB=K, MiB=M, and so on. GNU coreutils online help: <https://www.gnu.org/software/coreutils/> Full documentation <https://www.gnu.org/software/coreutils/du> or available locally via: info '(coreutils) du invocation'
Related: du man page