fd 10.5.0 shipped on 26 August 2026, its first release since March, and it settles the fd find replacement question: this is the version worth committing to memory. Two new flags, --ignore-parent and --exact, plus a security fix that sanitises control and bidirectional characters in filenames when output goes to a terminal (release notes). That last one blocks escape-sequence injection, where a crafted filename could smuggle terminal control codes into your session.
I've used fd for years. What changed here is small, but --exact in particular closes a gap I used to work around with anchors and quotes.
Why fd beats find for daily use
The pitch is that fd does what you meant. find . -name '*.log' -not -path './node_modules/*' becomes fd -e log. It skips hidden files and .gitignore'd paths by default, runs searches in parallel, and takes a regex without you escaping half of it.
The trade is that those defaults differ from find. If you want everything, you ask for it with --hidden and --no-ignore. That's the right default for interactive work and the wrong one to assume in a script you copied off the internet.
The flags worth memorizing
A handful earn their keep against the find equivalents:
-
fd -e tsfinds by extension, the replacement forfind -name '*.ts'. -
fd -Hincludes hidden files (findshows them by default,fddoesn't). -
fd -t fandfd -t dfilter to files or directories, likefind -type f. -
fd -x cmd {}runs a command per match, the parallel cousin offind -exec. -
fd -X cmdbatches all matches into one invocation, likefind ... -exec cmd {} +. -
fd --exact foomatches the whole filename literally, no substring, no regex. New in 10.5. -
fd --ignore-parentre-enables parent.gitignorehandling when a config turned it off. Also new in 10.5.
--exact is the one I keep reaching for now. Before it, matching a file called exactly test meant fd '^test$' and remembering the anchors. fd --exact test reads like what it does.
The security fix nobody asked about but everyone needed
The escape-sequence hardening matters more than the new flags, even if it's less fun. Any tool that prints filenames to a terminal can be tricked by a filename containing raw escape codes, which can rewrite your prompt or hide text. fd 10.5.0 now strips those control and bidi override characters when the output is a terminal, and leaves them alone when you're piping to another program. It also stopped accepting placeholders as the executable for --exec-batch while still allowing them for --exec.
If you're on an older fd, this is reason enough to bump. The rest is just nicer ergonomics on a tool that was already the one I reach for.
Top comments (0)