Cosmetics.
[finddup.git] / finddup.1
index 2d73865..46a4326 100644 (file)
--- a/finddup.1
+++ b/finddup.1
@@ -10,67 +10,110 @@ finddup \- Find files common to two directories (or not)
 
 .SH "SYNOPSIS"
 
-\fBfinddup\fP [OPTION]... DIR1 [[not:]DIR2]
+\fBfinddup\fP [OPTION]... DIR1 [[and:|not:]DIR2]
 
 .SH "DESCRIPTION"
 
 With a single directory argument, \fBfinddup\fP prints the duplicated
-files found in it. With two directories, it prints either the files
-common to both DIR1 and DIR2, or with the `not:' prefix, the ones
-present in DIR1 and not in DIR2.
+files found in it.
+
+With two directories, it prints either the files common to both DIR1
+and DIR2 or, with the `not:' prefix, the ones present in DIR1 and not
+in DIR2. The and: prefix is assumed by default and necessary only if
+you have a directory name starting with `not:'.
+
+This command compares files by first comparing their sizes, hence goes
+reasonably fast.
+
+When looking for identical files, \fBfinddup\fP associates a group ID
+to every content, and prints it along the file names. Use the \fB-g\fP
+to switch it off.
+
+Note that
+.B finddup DIR
+is virtually the same as
+.B finddup -i DIR DIR
 
 .SH "OPTIONS"
 .TP
-\fB-h\fR
+\fB-h\fR, \fB--help\fR
 display help and exit
 .TP
-\fB-d\fR
+\fB-d\fR, \fB--ignore-dots\fR
 ignore files and directories starting with a dot
 .TP
-\fB-c\fR
+\fB-0\fR, \fB--ignore-empty\fR
+ignore empty files
+.TP
+\fB-c\fR, \fB--hide-matchings\fR
 do not show which files from DIR2 corresponds to files from DIR1
+(hence, show only the files from DIR1 which have an identical twin in
+DIR2)
 .TP
-\fB-g\fR
-do not show the file group IDs (one group for each content)
+\fB-g\fR, \fB--no-group-ids\fR
+do not show the file group IDs
 .TP
-\fB-p\fR
+\fB-p\fR, \fB--show-progress\fR
 show progress information in stderr
 .TP
-\fB-r\fR
-shows the real path of the files
+\fB-r\fR, \fB--real-paths\fR
+show the real path of the files
+.TP
+\fB-i\fR, \fB--same-inodes-are-different\fR
+files with same inode are considered as different
+.TP
+\fB-m\fR, \fB--md5\fR
+use MD5 hashing
 
 .SH "BUGS"
 
-The display is not sorted by groups.
+None known, probably many. Valgrind does not complain though.
+
+The MD5 hashing is not satisfactory. It is computed for a file only if
+the said file has to be read fully for a comparison (i.e. two files
+match and we have to read them completely).
+
+Hence, in practice lot of partial MD5s are computed, which costs a lot
+of cpu and is useless. This often hurts more than it helps, hence it
+is off by default. The only case when it should really be useful is
+when you have plenty of different files of same size, and lot of
+similar ones, which does not happen often.
+
+Forcing the files to be read fully so that the MD5s are properly
+computed is not okay neither, since it would fully read certain files,
+even if we will never need their MD5s.
+
+.SH "WISH LIST"
+
+The format of the output should definitely be improved. Not clear how.
+
+Their could be some fancy option to link two instances of the command
+running on different machines to reduce network disk accesses. Again,
+this may not help much, for the reason given above.
 
 .SH "EXAMPLES"
-.nf
-.B finddup -cg blah something
+
+.B finddup -p0d blah
 
 .fi
-List files found in
-.B ./blah/
-which have a matching file with exact same content in
-.B ./something/
-without the group IDs
+List duplicated files in directory ./blah/, show a progress bar,
+ignore empty files, and ignore files and directories starting with a
+dot.
 
 .P
-.B finddup ./sources not:./backup
+.B finddup sources not:/mnt/backup
 
 .fi
-List all files found in
-.B ./sources/
-which do not have content-matching equivalent in
-.B ./backup.sources
+List all files found in \fB./sources/\fR which do not have
+content-matching equivalent in \fB/mnt/backup/\fR.
 
 .P
-.B finddup ./tralala ./cuicui | sort -n
+.B finddup -g tralala cuicui
 
 .fi
 List groups of files with same content which exist both in
-.B ./tralala/
-and
-.B ./cuicui/
+\fB./tralala/\fR and \fB./cuicui/\fR. Do not show group IDs, instead
+write an empty lines between groups of files of same content.
 
 .SH "AUTHOR"