106 个稳定版本
使用旧的 Rust 2015
1.21.14 | 2021年2月24日 |
---|---|
1.21.13 | 2020年1月4日 |
1.21.10 | 2019年11月8日 |
1.21.8 | 2018年11月13日 |
1.11.3 | 2017年7月29日 |
在 文件系统 中排名第 402
每月下载量 170 次
195KB
2K SLoC
《金色的夏天》
如果您做大量的编程,您可能会发现构建工件散布各处。《sn》是一个帮助您查找这些工件的工具。
sn
还可以替代 du
。它有更友好的输出,更合理的命令和默认设置,并且由于多线程,它在大目录上运行得更快。
安装
脚本
在命令提示符中输入以下内容
curl -LSfs https://japaric.github.io/trust/install.sh | sh -s -- --git vmchale/tin-summer
二进制安装
如果脚本对您不起作用,您可以从 发布页面 下载二进制文件。
Cargo
如果您的平台没有二进制文件,或者您想从源代码构建,请获取 cargo。然后
$ cargo install tin-summer
确保您处于夜间模式;否则
$ rustup run nightly cargo install tin-summer
使用
列出当前目录的目录和文件大小
$ sn f
并发地获取目录大小列表,排除版本控制
$ sn p --exclude '\.git|\.pijul|_darcs|\.hg'
获取 $DIR
中 12 个最大目录的排序列表
$ sn sort $DIR -n12
在当前目录中搜索包含构建工件的目录
$ sn ar
查找占用超过 200MB 磁盘空间的工件或包含工件的目录
$ sn ar -t200M
无障碍访问
关闭彩色输出
export CLICOLOR=0
比较(或,我讨厌 du 的 10 件事)
使用 du
的原因
- 读取磁盘使用情况,而不仅仅是文件大小
- 可选地取消符号链接引用
- 在小目录上略微更快
- 稳定且得到良好支持
使用 sn
的原因
- 在大目录上更快
- 使用 regex 进行排除,这使得它在使用
--exclude
标志时比du
快得多。 - 默认为可读性输出
- 彩色输出
- 通过 clap 提供更友好的帮助
- 提供排序输出
- 查找构建工件
- 读取文件大小,而不是磁盘使用情况
- 在 Rust 中可扩展
基准测试结果
目录大小 | 工具 | 命令 | 时间 |
---|---|---|---|
600MB | sn | sn p |
60.74 ms |
600MB | sn | sn d |
99.92 ms |
600MB | du | du-hacd2 |
88.28 ms |
4GB | sn | sn p |
185.2 ms |
4GB | sn | sn d |
271.9 ms |
4GB | du | du-hacd2 |
195.5 ms |
700MB | sn | sn p |
91.05 ms |
700MB | sn | sn d |
176.3 ms |
700MB | du | du-hacd2 |
153.8 ms |
7MB | sn | sn p |
19.48 ms |
7MB | sn | sn d |
12.72 ms |
7MB | du | du-hacd2 |
10.13 ms |
这些命令在功能上基本上是等效的,除了 sn p
可能比 sn a
或 du
使用更多的线程。结果使用 Gabriel Gonzalez 的 bench 工具获得。您可以在 这里 或 这里 看到很棒的准则图表。
总之:是的,sn
在较大的目录上确实更快,但在较小的目录上也更慢。我希望能使其在未来更快;当前的简单并发模型有明显的改进方向。
屏幕截图(alacritty + solarized dark)
《金色的夏天》
du
构建工件的自适应方法
目前,sn
查找与构建工件相关联的扩展名的文件,或者被版本控制忽略的可执行文件。它还查找“构建目录”,如 .stack-work
、elm-stuff
等,如果它找到一个配置文件如 tweet-hs.cabal
,它将认为 所有 这些内容都是构建工件。
支持的语言
以下是在 sn artifacts
中测试过的语言列表。我们的 意图 是支持基本上任何东西,所以请随意打开 PR 或开始一个问题。
- Haskell(包括 GHCJS)
- Rust
- Julia
- Python
- Elm
- Nim
- Vimscript
- TeX
- Idris
- FORTRAN
- Ruby
- C
自动清理
sn
可以为您清理工件,但仅限于上述指示的语言。这仍然是实验性的,但它已经过测试,不应该删除不需要的文件(尽管它可能不会清理所有应该清理的文件)。
依赖关系
~6–15MB
~164K SLoC