ncdu but faster
A fork of ncdu (NCurses Disk Usage) by Yoran Heling, with incremental caching for dramatically faster subsequent scans.
indu adds mtime-based incremental caching. On first scan, it builds a cache file storing directory metadata. On subsequent scans, unchanged directories are loaded from cache instead of being rescanned.
Expected speedup: ~90% for typical workloads where <10% of files changed between scans.
# Scan with cache (first run creates cache, subsequent runs use it)
indu --cache ~/.cache/indu-home.json ~
# Or short form
indu -C ~/.cache/indu-home.json ~- On first scan: builds cache file storing directory metadata (mtime, inode, device, sizes)
- On subsequent scans: checks if directory mtime + inode + device match cache
- If all match → skip recursion, use cached sizes
- If any differ → rescan that directory subtree
The cache correctly handles:
- File modifications (mtime changes)
- New/deleted files (parent directory mtime changes)
- Renamed directories (inode changes)
- Moved to different filesystem (device changes)
- Concurrent access (file locking with stale lock detection)
autoreconf -fi
./configure
make
sudo make install- ncurses library (ncursesw for wide character support)
- Standard C compiler (gcc/clang)
- autotools (autoconf, automake) for building from git
indu reads configuration from:
/etc/indu.conf(system-wide)$HOME/.config/indu/config(user-specific)
INDU_SHELL- Shell to spawn when pressing 'b' (defaults to$SHELL)INDU_LEVEL- Nesting level when spawning shells from indu
This is a fork of ncdu by Yoran Heling. See the original project for more information about the base functionality.
MIT License (same as original ncdu)