Find your next open-source project

Search by name, purpose, or keyword — or paste a GitHub repository URL

A fast, user-friendly command-line tool for searching files and directories, an alternative to find.

45,088
1,299
Rust
Apache-2.0
9 years old

Project overview

fd searches entries in the filesystem and aims to replace the common cases of find with shorter, more intuitive commands and sensible defaults. It accepts regular expressions by default and glob patterns with -g, runs a parallel directory traversal, and colorizes results by file type like ls. The pattern is matched against the filename unless -p/--full-path is used.

Defaults are opinionated: hidden files and directories are skipped, and .gitignore/.fdignore/.ignore rules are respected. Both behaviors can be turned off. A single command can also execute a program for every match (-x/--exec, in parallel) or once with all matches as arguments (-X/--exec-batch), with placeholders such as {}, {/} and {.}. It fits terminal users, developers and anyone who regularly locates or batch-processes files.

Quick start

Install from a package manager or with Cargo:

cargo install fd-find

On Debian/Ubuntu the packaged binary is named fdfind; the README suggests linking it to fd if the name is free. Other options include Homebrew (brew install fd), Scoop, Chocolatey, Winget and prebuilt binaries from the release page.

Then run a single-argument search from the directory you want to scan:

fd netfl

This recursively finds entries whose names contain netfl and prints their paths. For a quick overview of all entries, run fd with no arguments or use a catch-all pattern such as . when specifying a directory. fd -h shows concise options and fd --help shows the detailed set.

Common refinements:

fd -e md                 # Markdown files
fd -e rs mod             # Rust files whose names match "mod"
fd '^x.*rc$'             # regular expression
fd -e zip -x unzip       # run unzip for every archive, in parallel
fd -g 'test_*.py' -X vim # open matching files in one editor instance

Options may appear after the pattern and path. Arguments after -x or -X belong to the executed command, so place those options last when also passing a pattern or path. Placeholders may need shell quoting depending on the shell.

Constraints and behavior notes

  • Building from source requires Rust 1.90.0 or later and make.
  • Hidden entries and ignore-file matches are excluded by default. Use -H, -I, or -u/--unrestricted to search everything; searching the full path requires -p.
  • -x runs commands in parallel; limit concurrency with -j/--threads (for example --threads=1 for serial execution). Shell aliases and functions are not directly usable as -x/-X commands.
  • Destructive operations such as -X rm should be tried without the deletion step first. The README notes a race-condition caveat when recursively removing nested directories with the same name.
  • Released Linux binaries use jemalloc; preloading another allocator can crash fd. Build with cargo build --release --no-default-features to avoid this.
  • Colorized output depends on the LS_COLORS environment variable; NO_COLOR is honored.
  • The project is distributed under MIT and Apache-2.0.

HotRepo's take

On the 2026-11-06 Rust daily list, fd gained 100 stars and recorded a best position of 13. Its Hacker News threads show recurring discussion rather than a one-off launch: the 2017 Show HN drew 456 points, followed by threads in 2019, 2022, 2024 and a 2025 thread with 718 points and 294 comments. Those comments include praise for the maintainer's terminal tools and complaints about flag differences between fd and rg, which points to the practical friction of adopting a new command alongside existing ones. The project's README includes its own benchmark comparing fd against find on one machine, with the explicit caveat that results may differ elsewhere.

Project source and documentation

Written by AI from the project's README, updated . The project's own docs are the source of truth.

Hacker News

fd: A simple, fast and user-friendly alternative to 'find'
▲ 718 · 294 comments · March 19, 2025
Show HN: A simple, fast and user-friendly alternative to find, written in Rust
▲ 456 · 215 comments · October 8, 2017
A simple, fast and user-friendly alternative to ‘find’
▲ 432 · 178 comments · May 20, 2022