#division #compute #directory #directories #mtime #gets #between

app dirdiff-ocamlpro

Efficiently compute the differences between two directories

1 unstable release

0.2.0 Nov 29, 2022

#619 in Command line utilities

MIT license

434 lines

Crates.io badge github release badge badge github downloads badge
This project is proudly sponsored by Red Iron, the Rust division of OCamlPro


Dirdiff efficiently computes the differences between two directories. It lists files that either:

  1. exist only in one of the directories, or
  2. exist in both directories but with different content.

Dirdiff is intended to work on large directories, thanks to multi-threading, and by not trying to display the diff of the files' content.


Released binary

Precompiled binaries for (relatively recent) Linux/amd64 are available for every tagged release.

Install (by compiling from sources) using cargo

cargo install dirdiff-ocamlpro'


Dirdiff is written in Rust. To build it you will need to have the rust toolchain installed.

Once you have obtained the source, the following command will build the binary and put it in the root directory of the repo.

cd dirdiff/
cargo build --release
# Copy the binary to the root of the repo
mv target/release/dirdiff dirdiff


Usage: dirdiff [OPTIONS] <DIR1> <DIR2>

          First directory to diff from

          Second directory to diff from

  -j, --jobs <JOBS>
          Number of parallel threads to use.

          Use 0 or no option for auto-detection.

          Whether to check if the mtime is different.

          Only applies to file whose content is otherwise the same, and gets its specific output tag: `[Differ by mtime only]`.

  -L, --follow-symlink
          Whether to follow symlinks when comparing directories' content

          Whether to follow symlinks for program's arguments

  -h, --help
          Print help information (use `-h` for a summary)

  -V, --version
          Print version information

Sample output

Columns are tab separated

[Files differ]	"foo/bar"
[Present in first dir. only]	"subdir_a"
[Present in second dir. only]	"subdir_b"

The diff is outputted to stdout. If symlinks are encountered, a warning will be displayed on stderr.


~49K SLoC