rmgdiff is an awk script that works in conjunction with almost any graphical file difference browser. It
is known to work with mgdiff, tkdiff, and xdiff.
Unless I am mistaken, most of the GUI difference viewers (except for emacs) do not have built-in support
for recursing down two directories, but diff does. Based on diff's output, rmgdiff decides when to
invoke the graphical difference viewer.
In addition, rmgdiff also collates diff's output. As soon as a new difference is encountered in a text
file, rmgdiff will print to standard output the name of the file that both directories have in common.
It will then start the GUI and block until the user exits. As more text files with differences are
found, the GUI will be started up again.
In the interim, rmgdiff will keep track of differences in binary (non-text) files. It organizes the
binary files as executables, shared libraries, static libraries, object files, and other. Only after all
the text files have been displayed will rmgdiff report the binary differences.
It also keeps track of files and directories that diff reports as being only in one directory or another.
rmgdiff organizes these entries by directory. Thus, files in one directory will be reported in one
block, and files that are in the other directory will be reported in a different block.
In addition to printing the name of the files that are different, rmgdiff defaults to printing the
relevant portion of the output from the file command. This has the unfortunate side-effect of slowing
things down; however, I find this information to be invaluable. If you're just looking for a fast way to
collate diff's output, try piping it into sort instead.