Command-line fuzzy finder for interactive filtering of files, command history, processes, and other lists
fzf is a command-line fuzzy finder that provides interactive filtering for any kind of list input. It processes data from STDIN or traverses the file system to generate lists of files, command history, processes, hostnames, bookmarks, git commits, and other items. The tool implements a fuzzy matching algorithm that allows users to quickly type patterns with omitted characters while still finding the desired results.
The tool integrates with popular shells (Bash, Zsh, Fish) and editors (Vim, Neovim) through key bindings and completion mechanisms. Shell integration provides CTRL-T for file selection, CTRL-R for command history search, and ALT-C for directory navigation. It supports various display modes including height-constrained and popup modes, and offers extensive customization through command-line options and environment variables.
fzf is distributed as a single binary and can process millions of items efficiently. It includes a preview window feature for examining file contents or command outputs before selection, supports custom key bindings through an event-action system, and can execute external programs or reload candidate lists dynamically. The tool is particularly useful for developers, system administrators, and command-line users who need to quickly navigate large datasets or file hierarchies.
# via Homebrew
brew install fzf
# via APT
sudo apt install fzf
# via Git
git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf && ~/.fzf/install
