bootandy/dust

▲ 41 stars today★ 12,354⑂ 294

A more intuitive version of du in rust

About bootandy/dust

bootandy/dust is an open-source project on GitHub, mainly written in Rust. A more intuitive version of du in rust It currently holds 12,354 stars and 294 forks with 10 open issues, and was last pushed on 2026-09-16 (repository created 2018-03-16).

Project Overview

Git Homed tracks it on the Today's Trending board, currently at rank #71 with 41 new stars today.

GitHub Repository Details

Repository bootandy/dust · default branch master · size 1384 KB · watchers 39 · source: GitHub REST API and repository README

README

Build Status

Dust

du + rust = dust. Like du but more intuitive.

Why

Because I want an easy way to see where my disk is being used.

Demo

https://github.com/bootandy/dust/blob/HEAD/dust demo — interactive disk usage analysis

Study the above demo

Install

Quick Install (Linux, macOS, Windows)

curl -sSfL https://raw.githubusercontent.com/bootandy/dust/refs/heads/master/install.sh | sh

Cargo https://github.com/bootandy/dust/blob/HEAD/Packaging status

Cargo

🍺 Homebrew (Mac OS)

🍺 Homebrew (Linux)

DNF (Fedora Linux)

Snap Ubuntu and supported systems

Note: dust installed through snap can only access files stored in the /home directory. See danie-dejager/dust-snap#2 for more information.

mise

Pacstall (Debian/Ubuntu)

Anaconda (conda-forge)

deb-get (Debian/Ubuntu)

x-cmd

Windows:

Download

Overview

Dust is meant to give you an instant overview of which directories are using disk space without requiring sort or head. Dust will print a maximum of one 'Did not have permissions message'.

Dust will list a slightly-less-than-the-terminal-height number of the biggest subdirectories or files and will smartly recurse down the tree to find the larger ones. There is no need for a '-d' flag or a '-h' flag. The largest subdirectories will be colored.

The different colors on the bars: These represent the combined tree hierarchy & disk usage. The shades of grey are used to indicate which parent folder a subfolder belongs to. For instance, look at the above screenshot. .steam is a folder taking 44% of the space. From the .steam bar is a light grey line that goes up. All these folders are inside .steam so if you delete .steam all that stuff will be gone too.

If you are new to the tool I recommend to try tweaking the -n parameter. dust -n 10, dust -n 50.

Usage

Usage: dust
Usage: dust 
Usage: dust   <another_dir> <and_more>
Usage: dust -p (full-path - Show fullpath of the subdirectories)
Usage: dust -s (apparent-size - shows the length of the file as opposed to the amount of disk space it uses)
Usage: dust -n 30  (Shows 30 directories instead of the default [default is terminal height])
Usage: dust -d 3  (Shows 3 levels of subdirectories)
Usage: dust -D (Show only directories (eg dust -D))
Usage: dust -F (Show only files - finds your largest files)
Usage: dust -r (reverse order of output)
Usage: dust -o si/b/kb/kib/mb/mib/gb/gib (si - prints sizes in powers of 1000. Others print size in that format).
Usage: dust -X ignore  (ignore all files and directories with the name 'ignore')
Usage: dust -x (Only show directories on the same filesystem)
Usage: dust -b (Do not show percentages or draw ASCII bars)
Usage: dust -B (--bars-on-right - Percent bars moved to right side of screen)
Usage: dust -i (Do not show hidden files)
Usage: dust -c (No colors [monochrome])
Usage: dust -C (Force colors)
Usage: dust --dim (Dim the percent bars to reduce brightness on dark terminals)
Usage: dust -f (Count files instead of diskspace [Counts by inode, to include duplicate inodes use dust -f -s])
Usage: dust -t (Group by filetype)
Usage: dust -z 10M (min-size, Only include files larger than 10M)
Usage: dust -e regex (Only include files matching this regex (eg dust -e "\.png$" would match png files))
Usage: dust -v regex (Exclude files matching this regex (eg dust -v "\.png$" would ignore png files))
Usage: dust -L (dereference-links - Treat sym links as directories and go into them)
Usage: dust -P (Disable the progress indicator)
Usage: dust -T (Set the number of walker threads. Default is the CPU count. For high-latency storage like NFS or remote mounts, a higher count can speed up the walk by overlapping more concurrent stat calls.)
Usage: dust -R (For screen readers. Removes bars/symbols. Adds new column: depth level. (May want to use -p for full path too))
Usage: dust --skip-total (No total row will be displayed)
Usage: dust -z 40000/30MB/20kib (Exclude output files/directories below size 40000 bytes / 30MB / 20KiB)
Usage: dust -j (Prints JSON representation of directories, try: dust -j  | jq)
Usage: dust --files0-from=FILE (Read NUL-terminated file paths from FILE; if FILE is '-', read from stdin)
Usage: dust --files-from=FILE (Read newline-terminated file paths from FILE; if FILE is '-', read from stdin)
Usage: dust --collapse=node-modules will keep the node-modules folder collapsed in display instead of recursively opening it
Usage: dust --dim Displays dimmer bars

Config file

Dust has a config file where the above options can be set. Either: $XDG_CONFIG_HOME/dust/config.toml (falling back to ~/.config/dust/config.toml) or ~/.dust.toml

$ cat ~/.config/dust/config.toml
reverse=true
limit-filesystem=true
Keys use the long flag name in kebab-case. See config/config.toml for a fuller sample.

Alternatives

Why to use Dust over the Alternatives

Dust simply Does The Right Thing when handling lots of small files & directories. Dust keeps the output simple by only showing large entries.

Tools like ncdu & baobab, give you a view of directory sizes but you have no idea where the largest files are. For example directory A could have a size larger than directory B, but in fact the largest file is in B and not A. Finding this out via these other tools is not trivial whereas Dust will show the large file clearly in the tree hierarchy

Dust will not count hard links multiple times (unless you want to -s).

Typing dust -n 90 will show you your 90 largest entries. -n is not quite like head -n or tail -n, dust is intelligent and chooses the largest entries

GitHub Stars & Activity

12,354Stars
294Forks
10Open issues
RustLanguage

GitHub Popularity

GitHub stars12,354
Forks294
Open issues10
Primary languageRust
LicenseApache-2.0
Stars gained today41
Created2018-03-16
Last pushed2026-09-16

Trending History

Daily boardrank #71 · ▲ 41 stars

Related GitHub Projects

1

clash-verge-rev / clash-verge-rev

Rust★ 147,302⑂ 10,581▲ 216 stars
→
2

rust-lang / rust

Rust★ 119,174⑂ 16,697▲ 64 stars
→
3

ruvnet / RuView

Rust★ 95,021⑂ 12,564▲ 105 stars
→
4

juspay / hyperswitch

Rust★ 44,075⑂ 5,497▲ 147 stars
→
5

qdrant / qdrant

Rust★ 34,823⑂ 2,697▲ 28 stars
→
6

block / buzz

Rust★ 34,458⑂ 4,567▲ 159 stars
→
7

CapSoftware / Cap

Rust★ 22,807⑂ 1,967▲ 58 stars
→
8

kitao / pyxel

Rust★ 17,955⑂ 934▲ 32 stars
→

More Trending Repositories