Glide across your filesystem with ease.
Ruby Shell
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


fuzzycd enables you to use cd with partial directory names which are fuzzily matched. For example:

$ cd photos/seattle
  => photos/2008-05-28 parasailing in Seattle
$ cd code/player/playback
  => code/player/player_module_playback

If there is more than one directory that matches your expression, you'll get a menu to choose from.

$ cd photos/christmas christmas eve party christmas service christmas Day


fuzzycd helps you to be lazy and type just what's necessary to get where you're going. Life is too short to struggle through some of those long, tricky directory names, even with tab completion. If you have directories you navigate to ten times a day and symlinks aren't a workable option, this will save you keystrokes and put a smirk on your face as you effortlessly glide across your filesystem.


Modify your ~/.profile (or ~/.bashrc, depending your operating system) and add the following lines. This assumes you put fuzzycd in the ~/scripts/ directory.

export PATH=~/scripts/fuzzycd/:$PATH
source ~/scripts/fuzzycd/

This will effectively wrap the builtin bash cd command with the fuzzy cd command. Enjoy!

Note: If you have any other shell plugins which try to redefine the "cd" function (e.g. rvm does this), make sure that the source ... line comes last in your bash profile. fuzzycd plays nicely with other bash modification plugins, but it should be loaded last.


If you have any improvements, feel free to send me an email or a pull request.