---
name: "rmgdiff"
section: "1x"
platform: "linux"
package: "mgdiff"
version: "1.0+debian1-1+b1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/rmgdiff"
---

# rmgdiff(1x)

use almost any graphical file difference browser to recursively view the differences between two directories.

## NAME

rmgdiff - use almost any graphical file difference browser to recursively view the differences between two directories.

## SYNOPSIS

rmgdiff \[-b\] \[-d\] \[-g gui\] \[-n\] dir1 dir2

## DESCRIPTION

*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.

## COMMAND LINE OPTIONS

- **-b**

  Sets the basic reporting mode.  In basic mode, rmgdiff reports only file names.  It does not report the file types involved.

- **-c**

  By default, files relating to *CVS* are ignored by *rmgdiff*. If you want to include CVS files, use this option.

- **-d**

  Sets *rmgdiff* to print way too much debugging information.

- **-g** *gui*

  Tells *rmgdiff* which gui you would like to use for viewing differences.  By default, *mgdiff* is used.  You can also set $RMGDIFF\_GUI in your environment, but it can be overridden with this option.

- **-n**

  *rmgdiff* will not invoke the gui.  This is useful, if you only want to view the  collated output.

## AUTHOR

Paul Serice (paul@serice.net)
