45,131
stars
+2+203+485
1,303
forks
163
watchers
1,103
prs
1,013
issues
47
releases
71
discussions
README
fd [中文] [한국어] fd is a program to find entries in your filesystem. It is a simple, fast and user-friendly alternative to find. While it does not aim to support all of find's powerful functionality, it provides sensible (opinionated) defaults for a majority of use cases. Installation • How to use • Troubleshooting Features Intuitive syntax: fd PATTERN instead of find -iname 'PATTERN'. Regular expression (default) and glob-based patterns. Very fast due to parallelized directory traversal. Uses colors to highlight different file types (same as ls). Supports parallel command execution Smart case: the search is case-insensitive by default. It switches to case-sensitive if the pattern contains an uppercase character\. Ignores hidden directories and files, by default. Ignores patterns from your .gitignore, by default. The command name is 50% shorter\ than find :-). Demo !Demo How to use First, to get an overview of all available command line options, you can either run fd -h for a concise help message or fd --help for a more detailed version. Simple search fd is designed to find entries in your filesystem. The most basic search you can perform is to run fd with a single argument: the search pattern. For example, assume that you want to find an old script of yours (the name included netflix): bash fd netfl Software/python/imdb-ratings/netflix-details.py If called with just a single argument like this, fd searches the current directory recursively for any entries that contain the pattern netfl. Regular expression search The search pattern is treated as a regular expression. Here, we search for entries that start with x and end with rc: bash cd /etc fd '^x.rc$' X11/xinit/xinitrc X11/xinit/xserverrc The regular expression syntax used by fd is documented here. Specifying the root directory If we want to search a specific directory, it can be given as a second argument to fd: bash fd passwd /etc /etc/default/passwd /etc/pam.d/passwd /etc/passwd List all files, recursively fd can be called with no arguments. This is very useful to get a quick overview of all entries in the current directory, recursively (similar to ls -R): bash cd fd/tests fd testenv testenv/mod.rs tests.rs If you want to use this functionality to list all files in a given directory, you have to use a catch-all pattern such as . or ^: bash fd . fd/tests/ testenv testenv/mod.rs tests.rs Searching for a particular file extension Often, we are interested in all files of a particular type. This can be done with the -e (or --extension) option. Here, we search for all Markdown files in the fd repository: bash cd fd fd -e md CONTRIBUTING.md README.md The -e option can be used in combination with a search pattern: bash fd -e rs mod src/fshelper/mod.rs src/lscolors/mod.rs tests/testenv/mod.rs Searching for a particular file name To find files with exactly the provided search pattern, use the -g (or --glob) option: bash fd -g li
Top issues
#612Discussion: show Git-ignored files by default?68 comments · 2020-06-07#362Is there a global configuration file48 comments · 2018-11-14#1031Faded colors with solarized light?34 comments · 2022-06-05#710fd is allocation heavy, which can lead to heavy lock contention on some malloc implementations, especially hardened ones32 comments · 2020-12-31#839`--abs-path` and `--rel-path` instead of `--full-path`31 comments · 2021-08-29#5998.1.0 find the targets very slow in a large directory when using fzf. 8.0.0 works well. 26 comments · 2020-05-23#198Negating patterns: add --exclude-regex?25 comments · 2017-12-13#1395Benchmark is unfair. find(1) should not be used for grepping.23 comments · 2023-10-13
Discussions
#2211new release :)1 comments · 2026-11-02#2198Should smart case apply on a per-argument basis or for all patterns.0 comments · 2026-10-27#2069time duration filter?2 comments · 2026-07-23#2031ccline: AI at the zsh prompt — built for fd/fzf-style power users0 comments · 2026-06-10#1966Is `fd -l` safe to parse?3 comments · 2026-04-13#1949how to ignore absolute paths?1 comments · 2026-03-31#1848Why?1 comments · 2025-11-26#1807Using --format1 comments · 2025-10-09
Latest release
v10.5.2 v10.5.2 2026-11-07Bugfixes - Fix invalid syntax in zsh completions. See 2216 - Write raw bytes instead of replacing them with U+FFFD when --format output goes to a pipe, so filenames that are not valid UTF-8 reach downstream tools unchanged; see 2189.