4 个版本 (重大更改)

0.3.0 2020 年 7 月 15 日
0.2.0 2020 年 7 月 12 日
0.1.0 2020 年 7 月 10 日
0.0.1 2020 年 7 月 5 日

#779 in 文件系统

Apache-2.0

1MB
1.5K SLoC

包含 (rust 库, 1MB) tests/testfiles/find/librecurse.rlib, (rust 库, 1MB) tests/testfiles/contains/librecurse.rlib

recurse

跨平台的递归目录遍历文件管理工具

Version GNU/Linux CI macOS CI Windows CI codecov

关于

recurse 可执行文件是一个跨平台的命令行文件管理工具,具有 默认 递归目录遍历和正则表达式模式匹配支持。它用 Rust 构建,并在 GNU/Linux、macOS 和 Windows 平台上针对稳定版、测试版和夜间版 Rust 工具链进行测试。

通过 recurse 可执行文件的子命令提供功能。当前支持包括

  • recurse contains:识别与正则表达式模式匹配的 UTF-8 编码文本文件路径
  • recurse find:在有效的 UTF-8 编码文本文件中识别正则表达式模式匹配的行和字节偏移量
  • recurse walk:递归目录遍历文件列表

以下功能正在开发中

  • [将在 v0.4.0 中推出] recurse replace:替换与正则表达式模式匹配的文本文件中的字符串(问题 #6)
  • [将在 v0.5.0 中推出] 为支持文本匹配的子命令添加可选的规范 Unicode 正规化支持(问题 #8)

有关更多信息,请参阅下方的 使用说明 部分。

有关常见问题的答案,请参阅 FAQ.md

安装

从 crates.io 使用 cargo

使用 cargo 从 crates.io 安装 recurse 可执行文件

$ cargo install recurse

从存储库的主分支使用 cargo

克隆 Git 仓库,编译并使用以下命令安装可执行文件

$ git clone https://github.com/chrissimpkins/recurse.git
$ cd recurse
$ cargo install --path .

使用方法

使用以下语法在命令行中查看任何子命令的帮助文档

$ recurse [SUB-COMMAND] --help

帮助菜单显示可用选项和必需的参数。

递归目录遍历是所有子命令的默认行为。

contains 子命令

contains 语法

$ recurse contains [OPTIONS] [REGEX] [START PATH]

“contains”子命令的默认行为是列出所有包含一个或多个有效UTF-8编码Unicode标量值的文本文件路径,这些值与正则表达式模式匹配。默认情况下,隐藏路径会被排除,定义为以点号开头的目录或文件路径(例如,.hidden 目录或 .hidden.txt 文件)。隐藏目录下的所有目录和文件路径都被视为隐藏。目录遍历继续到用户指定的起始路径下,最大深度为[START PATH]

contains选项

命令行选项会修改默认行为。contains子命令支持以下选项

  • -a | --all:包括隐藏文件和目录路径
  • -e | --ext [EXTENSION]:根据包含EXTENSION字符串的路径进行过滤。输入EXTENSION字符串参数以定义扩展名过滤器。EXTENSION参数可以带有或不带点号字符(例如,txt.txt
  • --maxdepth [DEPTH]:扩展文件系统子目录结构的最大深度。输入DEPTH的整数值以限制目录遍历。
  • --mindepth [DEPTH]:开始遍历文件系统子目录结构的最小深度。输入DEPTH的整数值以限制目录遍历。
  • --symlinks:跟随符号链接

find子命令

find语法

$ recurse find [OPTIONS] [REGEX] [START PATH]

find子命令的默认行为是列出所有文本文件中与正则表达式模式匹配的、具有有效UTF-8编码Unicode标量值的行。报告包括文件中每行的以下数据

[FILEPATH] [LINE NUMBER]:[START BYTE OFFSET INDEX]-[END BYTE OFFSET INDEX] [ MATCHED STRING ]

以下是此存储库中正则表达式模式 [Rr]ecurse 的匹配结果示例

./src/command/find.rs 12:11-18 [ Recurse ]

请注意,当多字节编码字符在匹配字符串或其之前时,字节偏移量不会与“字符偏移量”一一对应。

默认情况下,隐藏路径会被排除,并定义为以点号开头的目录或文件路径(例如,.hidden 目录或 .hiddent.txt 文件)。隐藏目录下的所有目录和文件路径都被视为隐藏。目录遍历继续到用户指定的起始路径下,最大深度为[START PATH]

find选项

命令行选项会修改默认行为。find子命令支持以下选项

  • -a | --all:包括隐藏文件和目录路径
  • -e | --ext [EXTENSION]:根据包含EXTENSION字符串的路径进行过滤。输入EXTENSION字符串参数以定义扩展名过滤器。EXTENSION参数可以带有或不带点号字符(例如,txt.txt
  • --maxdepth [DEPTH]:扩展文件系统子目录结构的最大深度。输入DEPTH的整数值以限制目录遍历。
  • --mindepth [DEPTH]:开始遍历文件系统子目录结构的最小深度。输入DEPTH的整数值以限制目录遍历。
  • --symlinks:跟随符号链接

walk子命令

walk语法

$ recurse walk [OPTIONS] [START PATH]

“walk”子命令的默认行为是在标准输出流中列出所有非隐藏的文件路径。隐藏路径被定义为以点号(例如,.hidden 目录或 .hidden.txt 文件)开头的目录或文件。所有位于隐藏目录路径下的目录和文件路径都被认为是隐藏的。目录遍历继续到用户指定的起始路径 [START PATH] 下的最大深度。

walk 选项

命令行选项会修改默认行为。walk 子命令支持以下选项:

  • -a | --all:包括隐藏文件和目录路径
  • -d | --dir:仅筛选目录路径,不列出文件路径
  • -e | --ext [EXTENSION]:根据包含EXTENSION字符串的路径进行过滤。输入EXTENSION字符串参数以定义扩展名过滤器。EXTENSION参数可以带有或不带点号字符(例如,txt.txt
  • --maxdepth [DEPTH]:扩展文件系统子目录结构的最大深度。输入DEPTH的整数值以限制目录遍历。
  • --mindepth [DEPTH]:开始遍历文件系统子目录结构的最小深度。输入DEPTH的整数值以限制目录遍历。
  • --symlinks:跟随符号链接

贡献

请在 GitHub 问题跟踪器 上提交新问题。

欢迎在 Apache License,v2.0 下进行贡献。请提交一个包含您更改建议的 pull request。

许可协议

Apache License,v2.0。请参阅 LICENSE.md 以获取许可协议的完整文本。

依赖

~5–14MB
~149K SLoC