#目录列表 #查找 #模糊匹配 #递归目录 #模式 #名称 #文件

app fe

Fe是一个功能强大且易于使用的文件列表工具。使用Fe列出目录中的文件或使用模糊模式递归查找文件名。Fe的速度与find相当,有时甚至更快。

4个稳定版本

使用旧的Rust 2015

1.0.3 2017年1月30日
1.0.2 2017年1月27日

#1386 in 文件系统

Apache-2.0

27KB
510

Fe

Fe is on crates.io!

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的颜色。

fe supports colors

比较同一代码库中的相同搜索与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

这匹配srcmain

~/p/r/fe (master) $ fe srcmain
./src/main.rs

在这里,Ca匹配Cargo的开始,而tom匹配toml扩展名的开始。

~/p/r/fe (master) $ fe Catom
./Cargo.toml

这找到了非Rust文件,因为r匹配rebasesample的第一个字符。

~/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

特别感谢

非常感谢@ajslater提供的宝贵反馈,以及@brson在审查条件编译代码方面的帮助!

依赖关系

约4.5MB
约91K SLoC