You are on page 1of 9

NCDU(1) ncdu manual

NCDU(1)

NAME
ncdu - NCurses Disk Usage

SYNOPSIS
ncdu [options] dir

DESCRIPTION
ncdu (NCurses Disk Usage) is a curses-based version of the well-known 'du',
and provides a
fast way to see what directories are using your disk space.

OPTIONS
Mode Selection
-h, --help
Print a short help message and quit.

-v, -V, --version


Print ncdu version and quit.

-f FILE
Load the given file, which has earlier been created with the "-o"
option. If FILE is
equivalent to "-", the file is read from standard input.

For the sake of preventing a screw-up, the current version of ncdu will
assume that the
directory information in the imported file does not represent the
filesystem on which
the file is being imported. That is, the refresh, file deletion and
shell spawning
options in the browser will be disabled.

dir Scan the given directory.

-o FILE
Export all necessary information to FILE instead of opening the browser
interface. If
FILE is "-", the data is written to standard output. See the examples
section below for
some handy use cases.

Be warned that the exported data may grow quite large when exporting a
directory with
many files. 10.000 files will get you an export in the order of 600 to
700 KiB
uncompressed, or a little over 100 KiB when compressed with gzip. This
scales linearly,
so be prepared to handle a few tens of megabytes when dealing with
millions of files.

-e, --extended, --no-extended


Enable/disable extended information mode. This will, in addition to the
usual file
information, also read the ownership, permissions and last modification
time for each
file. This will result in higher memory usage (by roughly ~30%) and in a
larger output
file when exporting.

When using the file export/import function, this flag will need to be
added both when
exporting (to make sure the information is added to the export), and
when importing (to
read this extra information in memory). This flag has no effect when
importing a file
that has been exported without the extended information.

This enables viewing and sorting by the latest child mtime, or modified
time, using 'm'
and 'M', respectively.

--ignore-config
Do not attempt to load any configuration files.

Scan Options
These options affect the scanning progress, and have no effect when
importing directory
information from a file.

-x, --one-file-system
Do not cross filesystem boundaries, i.e. only count files and
directories on the same
filesystem as the directory being scanned.

--cross-file-system
Do cross filesystem boundaries. This is the default, but can be
specified to overrule a
previously given "-x".

--exclude PATTERN
Exclude files that match PATTERN. The files will still be displayed by
default, but are
not counted towards the disk usage statistics. This argument can be
added multiple times
to add more patterns.

-X FILE, --exclude-from FILE


Exclude files that match any pattern in FILE. Patterns should be
separated by a newline.

--include-caches, --exclude-caches
Include (default) or exclude directories containing CACHEDIR.TAG. The
directories will
still be displayed, but their contents will not be scanned or counted
towards the disk
usage statistics. <http://www.brynosaurus.com/cachedir/>

-L, --follow-symlinks, --no-follow-symlinks


Follow (or not) symlinks and count the size of the file they point to.
As of ncdu 1.14,
this option will not follow symlinks to directories and will count each
symlinked file
as a unique file (i.e. unlike how hard links are handled). This is
subject to change in
later versions.
--exclude-firmlinks, --follow-firmlinks
(MacOS only) Exclude or follow firmlinks.

--include-kernfs, --exclude-kernfs
(Linux only) Include (default) or exclude Linux pseudo filesystems, e.g.
/proc (procfs),
/sys (sysfs).

The complete list of currently known pseudo filesystems is: binfmt, bpf,
cgroup,
cgroup2, debug, devpts, proc, pstore, security, selinux, sys, trace.

Interface options
-0 Don't give any feedback while scanning a directory or importing a file,
other than when
a fatal error occurs. Ncurses will not be initialized until the scan is
complete. When
exporting the data with "-o", ncurses will not be initialized at all.
This option is the
default when exporting to standard output.

-1 Similar to "-0", but does give feedback on the scanning progress with a
single line of
output. This option is the default when exporting to a file.

In some cases, the ncurses browser interface which you'll see after the
scan/import is
complete may look garbled when using this option. If you're not
exporting to a file,
"-2" is probably a better choice.

-2 Provide a full-screen ncurses interface while scanning a directory or


importing a file.
This is the only interface that provides feedback on any non-fatal
errors while
scanning.

-q, --slow-ui-updates, --fast-ui-updates


Change the UI update interval while scanning or importing. Ncdu will
update the screen
10 times a second by default ("--fast-ui-updates"), this can be
decreased to once every
2 seconds with "-q" or "--slow-ui-updates". This feature can be used to
save bandwidth
over remote connections. This option has no effect when "-0" is used.

--enable-shell, --disable-shell
Enable or disable shell spawning from the browser. This feature is
enabled by default
when scanning a live directory and disabled when importing from file.

--enable-delete, --disable-delete
Enable or disable the built-in file deletion feature. This feature is
enabled by default
when scanning a live directory and disabled when importing from file.
Explicitly
disabling the deletion feature can work as a safeguard to prevent
accidental data loss.
--enable-refresh, --disable-refresh
Enable or disable directory refreshing from the browser. This feature is
enabled by
default when scanning a live directory and disabled when importing from
file.

-r Read-only mode. When given once, this is an alias for "--disable-


delete", when given
twice it will also add "--disable-shell", thus ensuring that there is no
way to modify
the file system from within ncdu.

--si, --no-si
List sizes using base 10 prefixes, that is, powers of 1000 (KB, MB,
etc), as defined in
the International System of Units (SI), instead of the usual base 2
prefixes, that is,
powers of 1024 (KiB, MiB, etc).

--disk-usage, --apparent-size
Select whether to display disk usage (default) or apparent sizes. Can
also be toggled in
the browser with the 'a' key.

--show-hidden, --hide-hidden
Show (default) or hide "hidden" and excluded files. Can also be toggled
in the browser
with the 'e' key.

--show-itemcount, --hide-itemcount
Show or hide (default) the item counts column. Can also be toggled in
the browser with
the 'c' key.

--show-mtime, --hide-mtime
Show or hide (default) the last modification time column. Can also be
toggled in the
browser with the 'm' key. This option is ignored when not in extended
mode (see "-e").

--show-graph, --hide-graph
Show (default) or hide the relative size bar column. Can also be toggled
in the browser
with the 'g' key.

--show-percent, --hide-percent
Show (default) or hide the relative size percent column. Can also be
toggled in the
browser with the 'g' key.

--sort COLUMN
Change the default column to sort on. Accepted values are disk-usage
(the default),
name, apparent-size, itemcount or mtime. The latter only makes sense in
extended mode,
see "-e".

The column can be suffixed with -asc or -desc to set the order to
ascending or
descending, respectively. e.g. "--sort=name-desc" will sort by name in
descending order.

--enable-natsort, --disable-natsort
Enable (default) or disable natural sort when sorting by file name.

--group-directories-first, --no-group-directories-first
Sort (or not) directories before files.

--confirm-quit, --no-confirm-quit
Require a confirmation before quitting ncdu. Very helpful when you
accidentally press
'q' during or after a very long scan.

--confirm-delete, --no-confirm-delete
Require a confirmation before deleting a file or directory. Enabled by
default, but can
be disabled if you're absolutely sure you won't accidentally press 'd'.

--color SCHEME
Select a color scheme. The following schemes are recognized: off to
disable colors, dark
for a color scheme intended for dark backgrounds and dark-bg for a
variation of the dark
color scheme that also works in terminals with a light background.

The default is dark-bg unless the "NO_COLOR" environment variable is


set.

CONFIGURATION
Ncdu can be configured by placing command-line options in "/etc/ncdu.conf"
or
"$HOME/.config/ncdu/config". If both files exist, the system configuration
will be loaded
before the user configuration, allowing users to override options set in the
system
configuration. Options given on the command line will override options set
in the
configuration files. The files will not be read at all when "--ignore-
config" is given on
the command line.

The configuration file format is simply one command line option per line.
Lines starting
with "#" are ignored. Example configuration file:

# Always enable extended mode


-e

# Disable file deletion


--disable-delete

# Exclude .git directories


--exclude .git

KEYS
? Show help + keys + about screen
up, down, j, k
Cycle through the items

right, enter, l
Open selected directory

left, <, h
Go to parent directory

n Order by filename (press again for descending order)

s Order by filesize (press again for descending order)

C Order by number of items (press again for descending order)

a Toggle between showing disk usage and showing apparent size.

M Order by latest child mtime, or modified time. (press again for


descending order)
Requires the -e flag.

d Delete the selected file or directory. An error message will be shown


when the contents
of the directory do not match or do not exist anymore on the filesystem.

t Toggle dirs before files when sorting.

g Toggle between showing percentage, graph, both, or none. Percentage is


relative to the
size of the current directory, graph is relative to the largest item in
the current
directory.

c Toggle display of child item counts.

m Toggle display of latest child mtime, or modified time. Requires the -e


flag.

e Show/hide 'hidden' or 'excluded' files and directories. Please note that


even though you
can't see the hidden files and directories, they are still there and
they are still
included in the directory sizes. If you suspect that the totals shown at
the bottom of
the screen are not correct, make sure you haven't enabled this option.

i Show information about the current selected item.

r Refresh/recalculate the current directory.

b Spawn shell in current directory.

Ncdu will determine your preferred shell from the "NCDU_SHELL" or


"SHELL" variable (in
that order), or will call "/bin/sh" if neither are set. This allows you
to also
configure another command to be run when he 'b' key is pressed. For
example, to spawn
the vifm(1) file manager instead of a shell, run ncdu as follows:
export NCDU_SHELL=vifm
ncdu

Ncdu will set the "NCDU_LEVEL" environment variable or increment it


before spawning the
shell. This variable allows you to detect when your shell is running
from within ncdu,
which can be useful to avoid nesting multiple instances of ncdu. Ncdu
itself does not
(currently) warn when attempting to run nested instances.

q Quit

FILE FLAGS
Entries in the browser interface may be prefixed by a one-character flag.
These flags have
the following meaning:

! An error occurred while reading this directory.

. An error occurred while reading a subdirectory, so the indicated size


may not be
correct.

< File or directory is excluded from the statistics by using exclude


patterns.

> Directory is on another filesystem.

^ Directory is excluded from the statistics due to being a Linux pseudo


filesystem.

@ This is neither a file nor a folder (symlink, socket, ...).

H Same file was already counted (hard link).

e Empty directory.

EXAMPLES
To scan and browse the directory you're currently in, all you need is a
simple:

ncdu

If you want to scan a full filesystem, your root filesystem, for example,
then you'll want
to use "-x":

ncdu -x /

Since scanning a large directory may take a while, you can scan a directory
and export the
results for later viewing:

ncdu -1xo- / | gzip >export.gz


# ...some time later:
zcat export.gz | ncdu -f-
To export from a cron job, make sure to replace "-1" with "-0" to suppress
any unnecessary
output.

You can also export a directory and browse it once scanning is done:

ncdu -o- | tee export.file | ./ncdu -f-

The same is possible with gzip compression, but is a bit kludgey:

ncdu -o- | gzip | tee export.gz | gunzip | ./ncdu -f-

To scan a system remotely, but browse through the files locally:

ssh -C user@system ncdu -o- / | ./ncdu -f-

The "-C" option to ssh enables compression, which will be very useful over
slow links.
Remote scanning and local viewing has two major advantages when compared to
running ncdu
directly on the remote system: You can browse through the scanned directory
on the local
system without any network latency, and ncdu does not keep the entire
directory structure in
memory when exporting, so you won't consume much memory on the remote
system.

HARD LINKS
Every disk usage analysis utility has its own way of (not) counting hard
links. There does
not seem to be any universally agreed method of handling hard links, and it
is even
inconsistent among different versions of ncdu. This section explains what
each version of
ncdu does.

ncdu 1.5 and below does not support any hard link detection at all: each
link is considered
a separate inode and its size is counted for every link. This means that the
displayed
directory sizes are incorrect when analyzing directories which contain hard
links.

ncdu 1.6 has basic hard link detection: When a link to a previously
encountered inode is
detected, the link is considered to have a file size of zero bytes. Its
size is not counted
again, and the link is indicated in the browser interface with a 'H' mark.
The displayed
directory sizes are only correct when all links to an inode reside within
that directory.
When this is not the case, the sizes may or may not be correct, depending on
which links
were considered as "duplicate" and which as "original". The indicated size
of the topmost
directory (that is, the one specified on the command line upon starting
ncdu) is always
correct.
ncdu 1.7 and later has improved hard link detection. Each file that has more
than two links
has the "H" mark visible in the browser interface. Each hard link is counted
exactly once
for every directory it appears in. The indicated size of each directory is
therefore,
correctly, the sum of the sizes of all unique inodes that can be found in
that directory.
Note, however, that this may not always be same as the space that will be
reclaimed after
deleting the directory, as some inodes may still be accessible from hard
links outside it.

BUGS
Directory hard links are not supported. They will not be detected as being
hard links, and
will thus be scanned and counted multiple times.

Some minor glitches may appear when displaying filenames that contain
multibyte or
multicolumn characters.

All sizes are internally represented as a signed 64bit integer. If you have
a directory
larger than 8 EiB minus one byte, ncdu will clip its size to 8 EiB minus one
byte. When
deleting items in a directory with a clipped size, the resulting sizes will
be incorrect.

Item counts are stored in a signed 32-bit integer without overflow


detection. If you have a
directory with more than 2 billion files, quite literally anything can
happen.

On macOS 10.15 and later, running ncdu on the root directory without `--
exclude-firmlinks`
may cause directories to be scanned and counted multiple times. Firmlink
cycles are
currently (1.16) not detected, so it may also cause ncdu to get stuck in an
infinite loop
and eventually run out of memory.

Please report any other bugs you may find at the bug tracker, which can be
found on the web
site at https://dev.yorhel.nl/ncdu

AUTHOR
Written by Yoran Heling <projects@yorhel.nl>.

SEE ALSO
du(1)

ncdu-1.18.1 2023-03-05
NCDU(1)

You might also like