fuzzy-find
brew install fuzzy-find
v0.6.0
MIT
Fuzzy filename finder matching across directories as well as files
6
30-day installs · #9994
19
90-day · #9870
103
365-day · #9092
161
★ GitHub stars · updated 12y ago
Links
- https://github.com/silentbicycle/ff
- GitHub: silentbicycle/ff
- Brew formula source: Formula/f/fuzzy-find.rb
Raw metadata
{
"aliases": [],
"alternatives": [],
"build_dependencies": [],
"categories": [],
"caveats": null,
"conflicts_with": [],
"dependencies": [],
"deprecated": 0,
"deprecation_reason": null,
"desc": "Fuzzy filename finder matching across directories as well as files",
"disable_reason": null,
"disabled": 0,
"enrichment_fetched_at": "2026-06-20T23:37:52+00:00",
"first_seen": "2026-06-20T23:34:18+00:00",
"full_name": "fuzzy-find",
"github_default_branch": "master",
"github_last_commit_at": "2013-12-18T23:57:41Z",
"github_readme_excerpt": "# fuzzy-find: fuzzy completion for finding files #\n\n`ff` searches a directory tree with basic [fuzzy-completion][fc]. I wrote it\nbecause `find -name \"blah\"` only scans filenames (not their parent \ndirectories), and regular expressions for fuzzy completion are\ncumbersome.\n\n[fc]: http://common-lisp.net/project/slime/doc/html/Fuzzy-Completion.html\n\nSearching for \"aeiou\" will print any paths that match the RE\n`.*a.*e.*i.*o.*u.*`. \n\nBy default, `ff` searches recursively from the current directory, but its\nsearch root can be set with the `-r` option.\n\n`ff` query strings are not regular expressions - characters such as\n\u0027.\u0027 and \u0027-\u0027 match literally. Any sections enclosed in \u0027/\u0027s\nwill be required to match within the same path element, and the\nconsecutive match character (default \u0027=\u0027) toggles exact matching.\n(I chose \u0027=\u0027 because it doesn\u0027t mean anything in basic REs and it\u0027s\nunshifted on most keyboards.)\n\nSee also: [compound-completion][cc]\n\n[cc]: http://common-lisp.net/project/slime/doc/html/Compound-Completion.html\n\n\n## Installation ##\n\nJust run make. I mean, it\u0027s one C file. The makefile is just `ff: ff.c`.\nCopy ff somewhere in your path.\n\n\n## Example ##\n\n`ff aeiou` matches both `~/and/the/first/one/used.txt`\nand `~/after_the_furious_ultimatum.txt`, because the characters \u0027a\u0027, \u0027e\u0027,\n\u0027i\u0027, \u0027o\u0027, and \u0027u\u0027 appear sequentially.\n\n`ff a/e/i/o/u` only matches `~/and/the/first/one/used.txt`, since the `/`s force\neach vowel to appear in its own directory element.\n\n`ff ae=iou=` would only match `~/after_the_furious_ultimatum.txt`, since\nit matches an \u0027a\u0027, then an \u0027e\u0027, then the `=`s specify a *consecutive* \"iou\" string.\n\n\n## Usage ##\n\n ff [-diltR] [-c char] [-n count] [-r root] query\n -c CHAR char to toggle Consecutive match (default: \u0027=\u0027)\n -d show Dotfiles\n -D only show directories\n -h print this Help\n -i case-Insensitive search\n -l follow Links (warning: no cycle detection)\n -t run Tests and exit\n -r ROOT set searc",
"github_repo": "silentbicycle/ff",
"github_stars": 161,
"github_topics": [],
"homepage": "https://github.com/silentbicycle/ff",
"homepage_og_description": null,
"homepage_og_image": null,
"homepage_title": null,
"installs_30d": 6,
"installs_365d": 103,
"installs_90d": 19,
"keg_only": 0,
"keg_only_reason": null,
"last_seen": "2026-06-20T23:34:18+00:00",
"license": "MIT",
"llm_generated_at": null,
"llm_model": null,
"name": "fuzzy-find",
"oldnames": [],
"one_liner": null,
"optional_dependencies": [],
"rank_30d": 9994,
"rank_365d": 9092,
"rank_90d": 9870,
"raw_hash": "60810ce0d18947f6",
"recommended_dependencies": [],
"revision": 0,
"ruby_source_path": "Formula/f/fuzzy-find.rb",
"tap": "homebrew/core",
"test_dependencies": [],
"uses_from_macos": [],
"version_head": "HEAD",
"version_stable": "0.6.0",
"versioned_formulae": [],
"why_use_this": null
}