20 个版本

0.13.0 2022 年 11 月 13 日
0.12.0 2022 年 1 月 31 日
0.11.3 2020 年 8 月 23 日
0.11.1 2020 年 7 月 12 日
0.10.3 2019 年 7 月 17 日

#741 in 文件系统

LGPL-3.0

30KB
605 代码行

Directory Differential hTool

DDH 遍历输入目录及其子目录。它还需要对文件进行哈希处理并报告结果。

"hTool" 中的 H 是不发音的。其缩写 "DDH" 中的 H 是发音的。

这个工具被称为 DDH 有两个非常好的原因。

  • DDT 是一种危险的杀虫剂
  • 我在创建项目时打错了字

使用方法

DDH 可以作为库和独立的 CLI 工具使用,并旨在在这两种情况下都易于使用。

库示例

let (files, errors): (Vec<Fileinfo>, Vec<(_, _)>) = ddh::deduplicate_dirs(dirs);
let (shared, unique): (Vec<&Fileinfo>, Vec<&Fileinfo>) = files
                    .par_iter()
                    .partition(|&x| x.get_paths().len()>1);
process_full_output(&shared, &unique, &files, &errors, &arguments);

CLI 安装

  • 安装 Rust
  • cargoinstall --githttps://github.com/darakian/ddh ddh
  • DDH 二进制文件将被安装到 $CARGO_HOME/.bin/ddh,这通常是 $HOME/.cargo/bin/ddh。如果您使用 rustup,它应该已经包含在您的 PATH 中。

CLI 功能

DDH 支持标准输出,便于人类理解,以及可解析的 json 输出,以便用于诸如 ddh-move 之类的自定义工具。

CLI 示例

Directory Difference hTool
Jon Moroney jmoroney@hawaii.edu
Compare and contrast directories.

Example invocation: ddh -v duplicates -d /home/jon/downloads /home/jon/documents
Example pipe: ddh -o no -v all -f json -d ~/Downloads/ | someJsonParser.bin

Usage: ddh [OPTIONS]

Options:
  -m, --minimum [<MIN_SIZE>]
          Minimum file size in bytes to consider [default: 0]
  -b, --blocksize [<BLOCKSIZE>]
          Set the display blocksize to Bytes, Kilobytes, Megabytes or Gigabytes [default: K] [possible values: B, K, M, G]
  -v, --verbosity [<VERBOSITY>]
          Set verbosity for printed output [default: quiet] [possible values: quiet, duplicates, all]
  -o, --output [<OUTPUT>]
          Set file to save all output. Use 'no' for no file output [default: Results.txt]
  -f, --format [<FMT>]
          Set output format [default: standard] [possible values: standard, json]
  -i, --ignore <IGNORE_DIRS>
          Directories to ignore (comma separated list)
  -d, --directories <DIRECTORIES>...
          Directories to parse
  -h, --help
          Print help information (use `--help` for more detail)
  -V, --version
          Print version information

DDH 如何工作?

DDH 通过对文件进行哈希处理以确定它们的唯一性来工作,因此它严重依赖于磁盘速度以实现性能。使用的算法选择在 此处 讨论。

依赖项

~2.8–4MB
~75K SLoC