#diff #directory #changed #compare #list #folder #recursion

folder_compare

Compare two folders and get a list of changed and new files

6 releases (3 breaking)

0.4.0 Sep 17, 2020
0.3.0 May 30, 2020
0.2.0 May 22, 2020
0.1.2 May 20, 2020

#350 in Parser tooling

Download history 53/week @ 2024-10-09 72/week @ 2024-10-16 3/week @ 2024-10-23 19/week @ 2024-10-30 16/week @ 2024-11-06 39/week @ 2024-11-13 79/week @ 2024-11-20 21/week @ 2024-11-27 122/week @ 2024-12-04 208/week @ 2024-12-11 116/week @ 2024-12-18 20/week @ 2024-12-25 237/week @ 2025-01-01 68/week @ 2025-01-08 97/week @ 2025-01-15 72/week @ 2025-01-22

474 downloads per month
Used in 2 crates

Apache-2.0

7KB
81 lines

folder_compare

A library to recursively compare files in two folders and return two lists of files: One with exclusive Files for the first folder one list with changed files between folders.

folder_compare also takes a list of Strings acting as exclude patterns using RegexSet.

Overall the functionality is comparable to a diff -rq folder1 folder2 -X excludepatterns.pat on unix like systems

For recognizing changed files, hashing with FxHasher is used.

Licensed under Apache-2.0

Usage

Add folder_compare as a dependency to your project's Cargo.toml:

[dependencies]
folder_compare = "0.3"

Example

The following code recursively iterates over two directories and returns lists of changed and new files excluding those with ".doc" and ".txt" as part of the name/path.

use std::path::Path;
use folder_compare;

let excluded = vec![".doc".to_string(), ".txt".to_string()];
let result = FolderCompare::new(Path::new("/tmp/a"), Path::new("/tmp/b"), &excluded).unwrap();

let changed_files = result.changed_files;
let new_filed = result.new_files;

Dependencies

~2.4–9.5MB
~90K SLoC