#wc #progress-bar #command-line #reading-file #rwc

bin+lib rust-wc

使用 Rust 编写的 GNU/wc 克隆,在读取大量大文件时速度更快

6 个版本

0.3.5 2022 年 12 月 19 日
0.3.4 2022 年 11 月 10 日
0.3.2 2022 年 10 月 29 日

1590命令行工具

MIT 许可证

25KB
460

rwc

这只是 GNU/wc 命令克隆的简单版本,使用 Rust 编写。
对于 Rust 初学者,可以自由地查看这个项目进行实践 :)
(使用 Clap-v4)

asciicast

功能

我所实现的功能如下

  • 支持并行读取多个文件并计算结果
  • 美观的表格输出
  • 读取文件时具有彩色进度条(读取大文件时非常有用)
  • 支持常见 shell 的自动完成 更多信息

注意
在读取大量大文件时,它比 wc 命令快得多且更美观。(感谢 rayon
但由于运行时构建的时间消耗,读取少量小文件时可能较慢。

对于中文用户,您可以查看我关于使用 clap-rs 编写此项目的博客

安装

手册

git clone https://github.com/jedsek/rust-wc
cd rust-wc
cargo build --release

命令路径为 rust-wc/target/release/rwc,您可以将其复制/移动到其他位置
或者直接使用以下命令:cargo run --release -- <args>

发布

您可以下载在 发布 中发布的二进制文件

示例

  • 使用所有选项计数指定目录中的文件
$ rwc all src/*
Please waiting...

Reading files / Getting content from stdin:
[0s][100%] >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 153B Done!
[0s][100%] >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 126B Done!
[0s][100%] >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 1.65 KiB Done!
[0s][100%] >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 5.43 KiB Done!
Calculating...
┌───────────────┬───────┬───────┬───────┬───────┬──────────────────────────────┐
 Path          │ Bytes │ Chars │ Words │ Lines │ Maximum line width (Unicode) 
├───────────────┼───────┼───────┼───────┼───────┼──────────────────────────────┤
 ./src/calc.rs │ 5562  │ 5562  │ 450   │ 181   │ 110                          │
├───────────────┼───────┼───────┼───────┼───────┼──────────────────────────────┤
 ./src/main.rs │ 153   │ 153   │ 18    │ 8     │ 34                           │
├───────────────┼───────┼───────┼───────┼───────┼──────────────────────────────┤
 ./src/cli.rs  │ 1694  │ 1694  │ 198   │ 63    │ 127                          │
├───────────────┼───────┼───────┼───────┼───────┼──────────────────────────────┤
 ./src/lib.rs  │ 126   │ 126   │ 14    │ 6     │ 72                           │
└───────────────┴───────┴───────┴───────┴───────┴──────────────────────────────┘
  • 获取帮助
$ rwc -h
A GNU/wc clone written in rust, which is faster when reading a large of big files

Usage: rwc <--bytes|--chars|--words|--lines|--longest-line> [PATH]...
       rwc [PATH]... <COMMAND>

Commands:
  all   Enabled all available options
  help  Print this message or the help of the given subcommand(s)

Arguments:
  [PATH]...  The path(s) you should provide
             Note when without FILE or it is `-`, read standard input (stop inputting by `CTRL-D`)
             The file read from stdin will prefix with `Input/`, and the other will prefix with `./` [default: -]

Options:
  -b, --bytes         Print the byte counts
  -c, --chars         Print the character counts
  -w, --words         Print the word counts
  -l, --lines         Print the line counts
  -L, --longest-line  Print the maximum line width (Unicode)
  -h, --help          Print help information
  -V, --version       Print version information

欢迎

当您遇到问题或想改进代码时,请随时提交 issue。
谢谢 :)

待办事项

  • 更好地处理目录参数
  • 当文件无法读取时,输出应报告错误
  • 尊重 .gitignore 文件

依赖项

~6–14MB
~150K SLoC