A new way to see and navigate directory trees : https://dystroy.org/broot
The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:
A better way to navigate directories
:warning: Hacktoberfest participants, please note the rules of this repo:
| The change | How it is received | |:---|:--- | Real typo or documentation fix | :thumbsup: Welcome | Verified code fix| :thumbsup: Welcome | Useless change in documentation or code| :x: Marked as spam | Any refactoring or reformating of the code| :x: Marked as spam | New feature or feature change when there was no discussion before| :x: Marked as spam
In case of doubt, come discuss in the chat before everything.
Notice the unlisted?
That's what makes it usable where the old
treecommand would produce pages of output.
.gitignorefiles are properly dealt with to put unwanted files out of your way (you can ignore them though, see documentation).
type a few letters
Hit altenter and you're back to the terminal in the desired location.
This way, you can navigate to a directory with the minimum amount of keystrokes, even if you don't exactly remember where it is.
broot is fast and doesn't block (any keystroke interrupts the current search to start the next one).
Most useful keys for this:
cdto the selected directory
:qif you just want to quit (you can use ctrlq if you prefer)
broot tries to select the most relevant file. You can still go from one match to another one using tab or arrow keys.
You may also search with a regular expression. To do this, add a
/before the pattern.
And you have other types of searches, for example searching on file content (start with
You may also apply logical operators or combine patterns, for example searching
testin all files except json ones could be
cargboth in file names and file contents would be
Once the file you want is selected you can
:eopens the file in your preferred editor (which may be a terminal one)
Most often you move your files in the blind. You do a few
lsbefore, then your manipulation, and maybe you check after.
You can instead do it without losing the view of the file hierarchy.
Move, copy, rm, mkdir, are built in and you can add your own shortcuts.
When a directory is selected, do ctrl→ and you open another panel (you may open other ones, or navigate between them, with ctrl← and ctrl→).
(yes, colors are fully customizable)
Using two panels, you can for example copy or move elements between them:
If you like you may do it Norton Commander style by binding
:copy_to_panelto F5 and
Hit ctrl→ when a file is selected and the preview panel appears.
The preview panel stays synchronized with the selection in tree panels.
Just find the file you want to edit with a few keystrokes, type
:e, then enter.
You can add verbs or configure the existing ones; see documentation.
And you can add shortcuts, for example a ctrl sequence or a function key
ls(and its clones):
If you want to display sizes, dates and permissions, do
br -sdpwhich gets you this:
You may also toggle options with a few keystrokes while inside broot. For example hitting a space, a
dthen enter shows you the dates. Or a space, then
hthen enter and you see hidden files.
You may sort by launching broot with
--sort-by-date. Or you may, inside broot, type a space, then
sd, and enter and you toggled the
When sorting, the whole content of directories is taken into account. So if you want to find on Monday morning the most recently modified files, launch
br --sort-by-date ~.
If you start broot with the
--whale-spottingoption (or its shortcut
-w), you get a mode tailored to "whale spotting" navigation, making it easy to determine what files or folders take space.
And you keep all broot tools, like filtering or the ability to delete or open files and directories.
If you hit
:fs, you can check the usage of all filesystems, so that you focus on cleaning the full ones.
Sizes, dates, files counts, are computed in the background, you don't have to wait for them when you navigate.
:gfto display the statuses of files (what are the new ones, the modified ones, etc.), the current branch name and the change statistics.
And if you want to see only the files which would be displayed by the
git statuscommand, do
:gs. From there it's easy to edit, or diff, selected files.
See Broot's web site for instructions regarding installation and usage.