4个稳定版本
使用旧的Rust 2015
1.0.3 | 2017年1月30日 |
---|---|
1.0.2 | 2017年1月27日 |
#1386 in 文件系统
27KB
510 行
Fe
Fe是一个功能强大且易于使用的文件列表工具。使用Fe列出目录中的文件或使用模糊模式递归查找文件名。Fe的速度与find相当,有时甚至更快。
安装
从cargo安装
$ cargo install fe
从源码安装
使用rust构建
git clone https://github.com/btipling/fe.git
cd fe
cargo install
计划使用homebrew和debian/aptitude软件包提供二进制文件。
使用方法
$ fe --help
fe 1.0.0
Helps you find files with a fuzzy search.
USAGE:
fe [FLAGS] [pattern]
FLAGS:
-e, --exact When you want an exact match. Probably best used with -n for searching
names.
-h, --help Prints help information
-i, --insensitive Sets the filename pattern to be case insensitive
-n, --name Search name and extension only.
-p, --plain Don't print colors.
-r, --regex Use a regular expression instead of a fuzzy search.
-V, --version Prints version information
-v, --verbose Print additional information during search. Use -vv for extra verbose debug
information.
ARGS:
<pattern> Sets the optional pattern to search for, if omitted it shows the files in the
current directory. Patterns that end with a / are treated as literal paths and
will result in a directory listing, not a search.
$ fe PatchSyntax
platform/vcs-api/src/com/intellij/openapi/diff/impl/patch/PatchSyntaxException.java
它尊重.gitignores,并且当你只想查找文件时,比使用find
更直观。
$ time fe gulp
gulpfile.js
0.00 real 0.00 user 0.00 sys
Fe可以列出目录,并显示类似于ls的颜色。
比较同一代码库中的相同搜索与find
的搜索结果。
$ time find . -name "gulpfile.js"
./gulpfile.js
./node_modules/escope/gulpfile.js
./node_modules/esrecurse/node_modules/estraverse/gulpfile.js
./node_modules/estraverse/gulpfile.js
./node_modules/gulp-stylus/examples/gulpfile.js
./node_modules/macaddress/gulpfile.js
0.55 real 0.02 user 0.28 sys
它支持unicode。
$ fe 犬
lib/src/犬ハチ.java
java/java-impl/src/com/intellij/internal/diGraph/impl/犬ハチ.java
你可以使用-p选项关闭颜色。
~/p/r/fe (master) $ fe foo
foo.sh
~/p/r/fe (master) $ cat (fe -p foo)
#!/usr/bin/env bash
echo 'foo'
模糊查找
Fe通过unicode字母数字字符查找文件。它的工作方式类似于IntelliJ的模糊文件打开器。搜索从单词开头开始匹配,如果匹配失败,则停止匹配直到下一个单词。单词由UTF8非字母数字字符分隔。
这找到了main.rs,因为m
匹配main
的第一个单词,而rs
从开始匹配扩展名。
~/p/r/fe (master) $ fe mrs
./src/main.rs
这匹配src
和main
。
~/p/r/fe (master) $ fe srcmain
./src/main.rs
在这里,Ca
匹配Cargo
的开始,而tom
匹配toml
扩展名的开始。
~/p/r/fe (master) $ fe Catom
./Cargo.toml
这找到了非Rust文件,因为r
匹配rebase
和sample
的第一个字符。
~/p/r/fe (master) $ fe rs
./.git/hooks/pre-rebase.sample
./.git/hooks/pre-receive.sample
./src/find.rs
./src/main.rs
这找到了匹配src
的所有文件。
~/p/r/fe (master) $ fe src
./src/cli.yaml
./src/find.rs
./src/main.rs
./src
这是一个非常具体的匹配。
~/p/r/fe (master) $ fe workspace
./.idea/workspace.xml
特别感谢
依赖关系
约4.5MB
约91K SLoC