du (disk usage) is a Linux CLI utility that allows users to see the estimated amount of disk space used by their files and directories. Like
du is another command that should be in your terminal toolkit as it has a very easy syntax and provides valuable file disk usage information.
du has a variety of options and flags, but I’ll be focusing on a handful of go-to options.
Using DU to Check Disk Usage
Getting started with
is easy, open any terminal and enter the following:
This will display the total size of all the contents of the current directory in a human-readable summary format (-sh). du can be pointed at both files and directories, checking the disk usage of a specific file or directory can be done like so:
du -sh some_file.txt #or du -sh some_dir
Performing this command in your home directory will show us the total disk usage.
#Example Output du -sh #17G . #Example output without -h du -s #16822512
Another useful option to use with
flag that can be used to display the size of all files and directories in the
current directory, including hidden files.
Expect a very long output (or not) depending on where you run it.
adds a ‘total’ report at the end of the output, which is useful if you are
checking multiple files or directories at once.
du -c -h ~/Documents
One more option that I’ve found to be exceptional is the
-d flag that tells how far for
du to probe on its report.
-d takes in a
N number value to represent the level to stop reading at, this is especially useful in a directory with lots of files as running
du -sh in that situation will give you a terminal readout that is miles long.
du -hacd 1 ~/Documents
The above command will return a summary for all the directories in the current directory at the top level without delving into the sub-directories and file contents. Which rocks for when you just need a more detailed summary over
-s. Specifying higher values will just go down to the next directory level, and so on.
--timeas it will display the last modified timestamp for all files and directories.
du -hacd 1 --time /home/linuxman #Sample --time output 4.0K 2022-12-20 19:01 ./.wallaby 8.0K 2023-01-04 11:46 ./.zshrc 4.0K 2023-02-06 11:05 ./.Xauthority 4.0K 2022-01-08 10:31 ./.bash_logout 288M 2023-01-26 19:59 ./Downloads ... 17G 2023-02-07 16:24 total
—timecan be further modified by passing the following arguments:
--time-style=style, changes the timestamp format from the standard to any of the following formats, where in place of
style you pass: full-iso, long-iso, iso, or +FORMAT.
full-iso: includes the date, time, and time zone information.
long-iso: includes the date, time.
iso: includes only the date.
+FORMATis just a placeholder for the date command, so the
datesyntax will fly here. Here’s a quick example:
du -hacd 1 --time --time-style='+%Y-%m-%d %H:%M:%S' ~/Documents
+%Y-%m-%d %H:%M:%S format string specifies the following format:
%Y: the year in XXXX format
%m: the month
%d: the day of the month
%H: the hour (24-hour clock)
%M: the minute
%S: the second
The last flag I’ll be talking about is the exclude option because sometimes we don’t need to see everything.
du has a couple of options that allow us to leave specified files/directories from a report. The first one I’ll mention is
--threshold is a great way to get a smaller list of files especially if you are looking for disk hogs, as you can specify in bytes (just pass any number), kilo (K), mega (M), and gigabytes (G). For example:
du -hacd 1 -t 200M
Here I asked for all files above 200 megabytes. The
version works the same way.
du -hacd 1 --threshold=300K
Finally we have the
--exclude=PATTERN flag that allows us to remove entire directories from our search results. Here PATTERN simple means the directories to exclude in REGEX, so wildcards (
*) can be used. Here’s an example of this:
du -hac --exclude=path/to/exclude
You can add multiple exclude options as needed to narrow your search results down. As shown below, I’ve chained a couple of excludes together along with a threshold of 2M.
du -hacd 1 --exclude=Documents --exclude=Pictures --exclude=Downloads -t 2M
write count of all files, not just directories.
produce grand total.
print total for directory only if it is N or fewer levels below command line argument.
print sizes in human readable format
display only total for each directory
show time of last modification of any file or directory
exclude files that match PATTERN, uses REGEX.
exclude entries smaller than SIZE if positive, or entries greater than SIZE if negative
du is a simple yet powerful tool for finding those pesky disk hogs on your system. Whether you’re a sysadmin or simply a day-to-day user wanting to keep your hard drive organized,
duis where it’s at.
du provides a great insight into the size and distribution of the files/directories on your system. Using
du effectively will save a lot of heartaches in the long run when it comes to managing disk space, and you’ll feel like the coolest kid on the block because your hard drive won’t be full of crap! Thanks for reading and make sure to subscribe for more posts like this one!