{"id":16900502,"url":"https://github.com/btipling/fe","last_synced_at":"2025-10-16T04:05:59.844Z","repository":{"id":54808595,"uuid":"79304429","full_name":"btipling/fe","owner":"btipling","description":"A super-fast and easy to use command line fuzzy file searcher built with the rust programming language.","archived":false,"fork":false,"pushed_at":"2022-08-29T22:25:02.000Z","size":60,"stargazers_count":24,"open_issues_count":8,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-16T01:39:43.174Z","etag":null,"topics":["cargo","cli","command-line-tool","file-utility","finder","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/btipling.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-01-18T04:48:32.000Z","updated_at":"2024-11-28T13:58:34.000Z","dependencies_parsed_at":"2022-08-14T03:30:57.944Z","dependency_job_id":null,"html_url":"https://github.com/btipling/fe","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btipling%2Ffe","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btipling%2Ffe/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btipling%2Ffe/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btipling%2Ffe/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/btipling","download_url":"https://codeload.github.com/btipling/fe/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243847061,"owners_count":20357317,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cargo","cli","command-line-tool","file-utility","finder","rust"],"created_at":"2024-10-13T17:54:58.786Z","updated_at":"2025-03-17T06:32:01.582Z","avatar_url":"https://github.com/btipling.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"# Fe\n\n[![Fe is on crates.io!](https://img.shields.io/crates/v/fe.svg)](https://crates.io/crates/fe)\n\nFe is a sophisticated, yet simple to use file listing utility. Use Fe to list files in a directory or\nto recursively find files by their names using a fuzzy pattern. Fe's speeds are comparable to\nfind, and often times faster.\n\n## Installation\n\n### From cargo:\n```shell\n$ cargo install fe\n```\n\n### From source:\nBuild with [rust](https://github.com/rust-lang/rust):\n```shell\ngit clone https://github.com/btipling/fe.git\ncd fe\ncargo install\n```\n\nHomebrew and debian/aptitude packages with binaries are planned.\n\n## Usage:\n\n```\n$ fe --help\nfe 1.0.0\nHelps you find files with a fuzzy search.\n\nUSAGE:\n    fe [FLAGS] [pattern]\n\nFLAGS:\n    -e, --exact          When you want an exact match. Probably best used with -n for searching\n                         names.\n    -h, --help           Prints help information\n    -i, --insensitive    Sets the filename pattern to be case insensitive\n    -n, --name           Search name and extension only.\n    -p, --plain          Don't print colors.\n    -r, --regex          Use a regular expression instead of a fuzzy search.\n    -V, --version        Prints version information\n    -v, --verbose        Print additional information during search. Use -vv for extra verbose debug\n                         information.\n\nARGS:\n    \u003cpattern\u003e    Sets the optional pattern to search for, if omitted it shows the files in the\n                 current directory. Patterns that end with a / are treated as literal paths and\n                 will result in a directory listing, not a search.\n```\n\n```shell\n$ fe PatchSyntax\nplatform/vcs-api/src/com/intellij/openapi/diff/impl/patch/PatchSyntaxException.java\n```\n\nIt respects .gitignores and is more ergonomic than using `find` when you just want to find a file:\n\n```shell\n$ time fe gulp\ngulpfile.js\n        0.00 real         0.00 user         0.00 sys\n```\n\nFe can list directories and shows colors similar to ls:\n\n![fe supports colors](https://cloud.githubusercontent.com/assets/249641/22361454/9fed1dfc-e40e-11e6-91f3-c93c80b70fae.png)\n\n\nCompare the same search with `find` on the same code base:\n\n```shell\n$ time find . -name \"gulpfile.js\"\n./gulpfile.js\n./node_modules/escope/gulpfile.js\n./node_modules/esrecurse/node_modules/estraverse/gulpfile.js\n./node_modules/estraverse/gulpfile.js\n./node_modules/gulp-stylus/examples/gulpfile.js\n./node_modules/macaddress/gulpfile.js\n        0.55 real         0.02 user         0.28 sys\n```\n\nIt works with unicode:\n\n```shell\n$ fe 犬\nlib/src/犬ハチ.java\njava/java-impl/src/com/intellij/internal/diGraph/impl/犬ハチ.java\n```\n\nYou can use turn off colors when you need to with -p:\n\n```shell\n~/p/r/fe (master) $ fe foo\nfoo.sh\n~/p/r/fe (master) $ cat (fe -p foo)\n#!/usr/bin/env bash\n\necho 'foo'\n```\n\n## Fuzzy finding\n\nFe finds files by unicode alpha-numeric characters. It works much like IntelliJ's fuzzy file opener.\nSearches start matching at word start, and on match failure stop matching until the next word. Words are separated by UTF8\nnon-alphanumeric characters.\n\nThis finds main.rs because `m` matches the first word of `main` and `rs` matches the extension from the start.\n```shell\n~/p/r/fe (master) $ fe mrs\n./src/main.rs\n```\n\nThis matches `src` and `main`.\n```shell\n~/p/r/fe (master) $ fe srcmain\n./src/main.rs\n```\n\nHere `Ca` matches the beginning of `Cargo` and `tom` matches the beginning of the `toml` extension.\n```shell\n~/p/r/fe (master) $ fe Catom\n./Cargo.toml\n```\n\nThis finds non-rust files because `r` matches the first character of `rebase` and the first character of `sample`.\n```shell\n~/p/r/fe (master) $ fe rs\n./.git/hooks/pre-rebase.sample\n./.git/hooks/pre-receive.sample\n./src/find.rs\n./src/main.rs\n```\n\nThis finds all the files that match `src`.\n```shell\n~/p/r/fe (master) $ fe src\n./src/cli.yaml\n./src/find.rs\n./src/main.rs\n./src\n```\n\nThis is a pretty specific match:\n```shell\n~/p/r/fe (master) $ fe workspace\n./.idea/workspace.xml\n```\n\n## Special thanks\n\nA big thank you to [@ajslater](https://github.com/ajslater) who provided valuable feedback and also\nto [@brson](https://github.com/brson) who helped review the conditional compilation code!","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbtipling%2Ffe","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbtipling%2Ffe","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbtipling%2Ffe/lists"}