1 .TH "FINDDUP" 1 "Mar 2010" "Francois Fleuret" "User Commands"
3 \" This man page was written by Francois Fleuret <francois@fleuret.org>
4 \" and is distributed under a Creative Commons Attribution-Share Alike
9 finddup \- Find files common to two directories (or not)
13 \fBfinddup\fP [OPTION]... DIR1 [[and:|not:]DIR2]
17 With a single directory argument, \fBfinddup\fP prints the duplicated
20 With two directories, it prints either the files common to both DIR1
21 and DIR2 or, with the `not:' prefix, the ones present in DIR1 and not
22 in DIR2. The and: prefix is assumed by default and necessary only if
23 you have a directory name starting with `not:'.
25 This command compares files by first comparing their sizes, hence goes
28 When looking for identical files, \fBfinddup\fP associates a group ID
29 to every content, and prints it along the file names. Use the \fB-g\fP
34 is virtually the same as
39 \fB-h\fR, \fB--help\fR
42 \fB-d\fR, \fB--ignore-dots\fR
43 ignore files and directories starting with a dot
45 \fB-0\fR, \fB--ignore-empty\fR
48 \fB-c\fR, \fB--hide-matchings\fR
49 do not show which files from DIR2 corresponds to files from DIR1
50 (hence, show only the files from DIR1 which have an identical twin in
53 \fB-g\fR, \fB--no-group-ids\fR
54 do not show the file group IDs
56 \fB-p\fR, \fB--show-progress\fR
57 show progress information in stderr
59 \fB-r\fR, \fB--real-paths\fR
60 show the real path of the files
62 \fB-i\fR, \fB--same-inodes-are-different\fR
63 files with same inode are considered as different
67 None known, probably many. Valgrind does not complain though.
69 The current algorithm is dumb, as it does not use any hashing of the
72 Here are the things I tried, which did not help at all: (1) Computing
73 md5s on the whole files, which is not satisfactory because files are
74 often never read entirely hence the md5s can not be properly computed,
75 (2) computing XOR of the first 4, 16 and 256 bytes with rejection as
76 soon as one does not match, (3) reading parts of the files of
77 increasing sizes so that rejection could be done with a small fraction
78 when possible, (4) using mmap instead of open/read.
82 The format of the output should definitely be improved. Not clear how.
84 Their could be some fancy option to link two instances of the command
85 running on different machines to reduce network disk accesses. This
86 may not help much though.
93 List duplicated files in directory ./blah/, show a progress bar,
94 ignore empty files, and ignore files and directories starting with a
98 .B finddup sources not:/mnt/backup
101 List all files found in \fB./sources/\fR which do not have
102 content-matching equivalent in \fB/mnt/backup/\fR.
105 .B finddup -g tralala cuicui
108 List groups of files with same content which exist both in
109 \fB./tralala/\fR and \fB./cuicui/\fR. Do not show group IDs, instead
110 write an empty lines between groups of files of same content.
114 Written by Francois Fleuret <francois@fleuret.org> and distributed
115 under the terms of the GNU General Public License version 3 as
116 published by the Free Software Foundation. This is free software: you
117 are free to change and redistribute it. There is NO WARRANTY, to the
118 extent permitted by law.