# v0.4.0 · GPLv3 · C99
neotree prints directory trees from the shell. It adds glob filtering, a find mode, multi-root traversal, sort options, a stats footer, and markdown export. One static binary, no runtime dependencies.
$ brew tap bharadwajsanket/neotree && brew install neotree$ curl -sSL https://raw.githubusercontent.com/bharadwajsanket/neotree/main/install.sh | bash> $ neotree src --stats src ├── cli.c ├── walk.c ├── walk.h ├── filter.c ├── filter.h ├── format.c ├── format.h └── ignore.c # 1 directory, 8 files
$ brew tap bharadwajsanket/neotree && brew install neotree$ curl -sSL https://raw.githubusercontent.com/bharadwajsanket/neotree/main/install.sh | bash$ irm https://raw.githubusercontent.com/bharadwajsanket/neotree/main/install.ps1 | iex$ git clone https://github.com/bharadwajsanket/neotree
cd neotree && make && sudo make install# also installs the ntree alias
Include or exclude paths with --pattern.
Locate a file or directory by name in the tree.
Pass more than one path in a single run.
Print a short file / directory count footer.
Sort by name or size, optionally reversed.
Skip files and only walk directories.
Respects .gitignore and a few sane builtins.
Write the tree out as txt or markdown.
Plain C99. Nothing to install at runtime.
One static binary in $PATH.
Symlinked as ntree so it's faster to type.
No dotfiles. Flags only, like tree(1).
> $ neotree src tests --stats src ├── cli.c ├── walk.c └── format.c tests ├── test_walk.c └── test_filter.c # 2 directories, 5 files
> $ neotree --pattern "*.c"
.
├── cli.c
├── walk.c
├── filter.c
├── format.c
└── tests
└── test_walk.c
> $ neotree --sort size --reverse
.
├── walk.c
├── format.c
├── cli.c
├── filter.c
└── ignore.c
> $ neotree --find "walk.c"
.
├── src
│ └── walk.c
└── tests
└── test_walk.c
> $ neotree --find-dir "src"
.
└── src
> $ neotree --export-markdown tree.md # wrote tree.md