8 个版本
使用旧的Rust 2015
0.1.8 | 2019年9月6日 |
---|---|
0.1.7 | 2019年9月5日 |
0.1.6 | 2019年3月4日 |
0.1.4 | 2019年2月28日 |
#1208 in 文件系统
42 每月下载量
67KB
414 行
Find Files (ff)
Find Files (ff) 工具递归地搜索指定目录中(默认为当前目录,如未提供)与指定正则表达式模式匹配的文件。
截图
安装
从发布页面下载您平台上的最新预编译可执行文件 ff
二进制文件。
如果您是Rust程序员,使用cargo install find-files
下载并安装ff
命令。要更新到较新版本,请使用--force
标志。
基准测试结果
$ hyperfine \
--warmup 3 \
--export-markdown benchmark-results.md \
"find . -iregex '.*[0-9]\.jpg$'" \
"find . -iname '*[0-9].jpg'" \
"fd -HI '.*[0-9]\.jpg$'" \
"ff .*[0-9]\.jpg$"
Benchmark #1: find . -iregex '.*[0-9]\.jpg$'
Time (mean ± σ): 42.8 ms ± 5.5 ms [User: 11.7 ms, System: 30.1 ms]
Range (min … max): 31.2 ms … 56.9 ms 48 runs
Benchmark #2: find . -iname '*[0-9].jpg'
Time (mean ± σ): 60.8 ms ± 7.2 ms [User: 27.9 ms, System: 31.4 ms]
Range (min … max): 44.0 ms … 76.2 ms 37 runs
Benchmark #3: fd -HI '.*[0-9]\.jpg$'
Time (mean ± σ): 18.8 ms ± 5.3 ms [User: 14.9 ms, System: 19.9 ms]
Range (min … max): 11.2 ms … 41.6 ms 96 runs
Benchmark #4: ff .*[0-9]\.jpg$
Time (mean ± σ): 18.7 ms ± 4.6 ms [User: 15.7 ms, System: 22.5 ms]
Range (min … max): 11.7 ms … 30.4 ms 123 runs
Summary
'ff .*[0-9]\.jpg$' ran
1.00 ± 0.37 times faster than 'fd -HI '.*[0-9]\.jpg$''
2.29 ± 0.63 times faster than 'find . -iregex '.*[0-9]\.jpg$''
3.25 ± 0.88 times faster than 'find . -iname '*[0-9].jpg'
命令 | 平均[ms] | 最小…最大[ms] |
---|---|---|
find. -iregex'.*[0-9]\.jpg$' |
42.8 ± 5.5 | 31.2…56.9 |
find. -iname'*[0-9].jpg' |
60.8 ± 7.2 | 44.0…76.2 |
fd-HI '.*[0-9]\.jpg$' |
18.8 ± 5.3 | 11.2…41.6 |
ff.*[0-9]\.jpg$ |
18.7 ± 4.6 | 11.7…30.4 |
表:benchmark-results.md
注意:有时,fd
比ff
快约1 ms
到2 ms
。
用法
USAGE:
ff [FLAGS] [OPTIONS] <PATTERN> [ROOT_PATH]
FLAGS:
-s, --case-sensitive Search case sensitively. By default, files are
searched case insensitively.
-D, --exclude-dir-paths Exclude paths from the search result which are
directories and not files.
-h, --help Prints help information
-G, --ignore-gitignore Ignore searching files and directories specified
in .gitignore. By default, the files and
directories specified in .gitignore are included
in the search results.
-H, --ignore-hidden Ignore searching hidden files and directories. By
default, hidden files and directories are
included in the search results.
-V, --version Prints version information
OPTIONS:
-x, --exclude <exclude> Exclude files and directories matching this
regular expression from the search results.
-L, --level <level> Recursively search only given level directories
deep. By default no depth restriction is imposed.
A value of 0 would always yield zero results. A
value of 1 searches for the direct children in
the given path.
-j, --threads <threads> The approximate number of threads to use. A value
of 0 (which is the default) results in thread
count set to available CPU cores.
ARGS:
<PATTERN> Find files whose name (path) matches this substring or
the regular expression.
<ROOT_PATH> Path to the directory to search files inside.[default:
`$PWD`]
示例
使用ff
搜索文件有无数种可能性。以下示例仅展示了冰山一角。
-
列出当前工作目录中匹配
article
字符串的文件路径。ff article
-
列出扩展名为
.png
或.PNG
的文件。ff png$
-
列出具有严格
.PNG
扩展名的文件。ff -s PNG$
-
搜索各种图像文件。
ff "\.(png|jpg|jpeg|gif|svg)$"
-
列出路径匹配
controllers
字符串的文件。ff controllers
-
在
./spec
目录中搜索.js
文件。ff \.js ./spec
-
搜索预期位于隐藏
.git
目录内,且名称包含commit
或类似内容的文件。$ ff git.*commit ./.git/COMMIT_EDITMSG # omitted other results
-
在搜索结果中不显示隐藏文件和目录。
ff something -H
-
在搜索结果中不显示那些在
.gitignore
中列出的文件和目录。ff src/.*js$ -G
在上述命令中如果没有
-G (--ignore-gitignore)
标志,它默认也会包括node_modules
等目录的结果。 -
不显示仅是目录而非实际文件的路径。
$ ff -D user ./app/models/user.rb ./app/models/user/address.rb ./specs/models/user_spec.rb ./specs/models/user/address_spec.rb
在上述命令中如果没有
-D (--exclude-dir-paths)
标志,它也会在结果中包含匹配的目录路径,如下所示。$ ff user ./app/models/user.rb ./app/models/user ./app/models/user/address.rb ./specs/models/user_spec.rb ./specs/models/user ./specs/models/user/address_spec.rb
-
排除(省略)与提供的可选排除正则表达式模式匹配的文件和目录。
ff rb$ app/controllers -x /(audit|admin|sso|api)/
上述命令将显示相对
app/controllers
目录内所有以rb
结尾的文件的路径,排除匹配/(audit|admin|sso|api)/
模式的路径。 -
限制在给定路径中搜索不超过3层深度。
ff -L 3 .js$
依赖项
~5–14MB
~144K SLoC