Merge function which finds duplication by size with removing entries which contains only 1 entry
This commit is contained in:
parent
5caff93a51
commit
249adfc821
|
@ -118,7 +118,6 @@ impl DuplicateFinder {
|
||||||
pub fn find_duplicates(&mut self) {
|
pub fn find_duplicates(&mut self) {
|
||||||
self.optimize_directories();
|
self.optimize_directories();
|
||||||
self.check_files_size();
|
self.check_files_size();
|
||||||
self.remove_files_with_unique_size();
|
|
||||||
if self.check_method == CheckingMethod::HASH {
|
if self.check_method == CheckingMethod::HASH {
|
||||||
self.check_files_hash();
|
self.check_files_hash();
|
||||||
}
|
}
|
||||||
|
@ -449,6 +448,22 @@ impl DuplicateFinder {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Remove files with unique size
|
||||||
|
let mut new_map: BTreeMap<u64, Vec<FileEntry>> = Default::default();
|
||||||
|
|
||||||
|
self.infos.number_of_duplicated_files_by_size = 0;
|
||||||
|
|
||||||
|
for (size, vector) in &self.files_with_identical_size {
|
||||||
|
if vector.len() > 1 {
|
||||||
|
self.infos.number_of_duplicated_files_by_size += vector.len() - 1;
|
||||||
|
self.infos.number_of_groups_by_size += 1;
|
||||||
|
self.infos.lost_space_by_size += (vector.len() as u64 - 1) * size;
|
||||||
|
new_map.insert(*size, vector.clone());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
self.files_with_identical_size = new_map;
|
||||||
|
|
||||||
Common::print_time(start_time, SystemTime::now(), "check_files_size".to_string());
|
Common::print_time(start_time, SystemTime::now(), "check_files_size".to_string());
|
||||||
}
|
}
|
||||||
pub fn save_results_to_file(&mut self, file_name: &str) {
|
pub fn save_results_to_file(&mut self, file_name: &str) {
|
||||||
|
@ -528,26 +543,6 @@ impl DuplicateFinder {
|
||||||
Common::print_time(start_time, SystemTime::now(), "save_results_to_file".to_string());
|
Common::print_time(start_time, SystemTime::now(), "save_results_to_file".to_string());
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Remove files which have unique size
|
|
||||||
fn remove_files_with_unique_size(&mut self) {
|
|
||||||
let start_time: SystemTime = SystemTime::now();
|
|
||||||
let mut new_map: BTreeMap<u64, Vec<FileEntry>> = Default::default();
|
|
||||||
|
|
||||||
self.infos.number_of_duplicated_files_by_size = 0;
|
|
||||||
|
|
||||||
for (size, vector) in &self.files_with_identical_size {
|
|
||||||
if vector.len() > 1 {
|
|
||||||
self.infos.number_of_duplicated_files_by_size += vector.len() - 1;
|
|
||||||
self.infos.number_of_groups_by_size += 1;
|
|
||||||
self.infos.lost_space_by_size += (vector.len() as u64 - 1) * size;
|
|
||||||
new_map.insert(*size, vector.clone());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
self.files_with_identical_size = new_map;
|
|
||||||
|
|
||||||
Common::print_time(start_time, SystemTime::now(), "remove_files_with_unique_size".to_string());
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Should be slower than checking in different ways, but still needs to be checked
|
/// Should be slower than checking in different ways, but still needs to be checked
|
||||||
fn check_files_hash(&mut self) {
|
fn check_files_hash(&mut self) {
|
||||||
let start_time: SystemTime = SystemTime::now();
|
let start_time: SystemTime = SystemTime::now();
|
||||||
|
|
Loading…
Reference in a new issue