3个版本

0.2.2 2022年1月26日
0.2.1 2021年10月29日
0.2.0 2021年10月29日

#1490 in 文件系统

MIT/Apache

12KB
254 代码行

dux

GNU coreutils du 的Rust实现,用于学习和探索Rust。这绝不是比 du 更好、更快或更智能。所以不要用它。

构建

# build
$ cargo build --release

# build and publish to ~/bin/ folder
$ ./publish

用法

# current path
$ dux
Total size is 204828703 bytes (204.83 MB) across 1176 items

# specify a path
$ dux ~/bin/
Total size is 586934311 bytes (586.93 MB) across 3372 items

# list largest files
$ dux -l
Largest files:
+----------+----------------+
| Size     | File           |
+----------+----------------+
| 23.56 MB | {file 1}       |
+----------+----------------+

Total size is 586934311 bytes (586.93 MB) across 3372 items

Cli参数

dux 0.2.0

Calculate disk space used by a folder

USAGE:
    dux [OPTIONS] [PATH]

ARGS:
    <PATH>    The folder to use (default to current directory)

OPTIONS:
    -h, --help                Print help information
    -l, --list-large-files    Lists top 10 largest files
    -V, --version             Print version information

性能

对于较小的目录,性能与 du 相当或更好(我不知道为什么!)

$ time du -hd 0
126G    .
du -hd 0  0.01s user 0.04s system 47% cpu 0.088 total

$ time dux
Total size is 129930609382 bytes (129.93 GB) across 159 items
dux  0.00s user 0.01s system 51% cpu 0.024 total

但是对于较大的文件夹,du 至少快3倍

$ time du -hd 0
699M    .
du -hd 0  0.05s user 0.67s system 48% cpu 1.498 total

$ time dux     
Total size is 666559986 bytes (666.56 MB) across 31623 items
dux  0.21s user 3.16s system 76% cpu 4.390 total

建议

如果您有任何关于如何提高性能(不编写不安全代码)和使代码更符合习惯用法的想法,请通过发送PR帮助这位朋友。

依赖项

~3–11MB
~85K SLoC