Compare two directories in Linux?

Comparing directories in Linux is a common task when managing files, troubleshooting issues, or synchronizing data between locations. There are multiple approaches available, from command-line utilities to graphical tools, each offering different levels of detail and functionality.

This guide explores various methods to compare two directories in Linux, ranging from basic command-line tools to advanced GUI applications with visual interfaces.

Sample Directory Structure

For demonstration purposes, let's create two sample directories with similar but not identical contents:

Dir1                          Dir2
??? client.log                ??? client.log
??? file01                    ??? file01
??? file02                    ??? file02
??? file03                    ??? file03
?                             ??? file04
??? server.log                ??? server.log
??? subdir1                   ??? subdir1
?   ??? file11                ?   ??? file11
?   ??? file12                ?   ??? file12
??? subdir2                   ??? subdir2
?   ??? file21                    ??? file21
?   ??? file22                    ??? file22
??? subdir3                       ??? file23
    ??? file31
    ??? file32

These directories contain identical files (same name and content), differing files (same name but different content), and unique files (present in only one directory).

Using the diff Command

The diff utility is the most fundamental tool for comparing directories. It compares file contents and provides detailed information about differences.

Basic Directory Comparison

diff --brief --recursive Dir1 Dir2
Files Dir1/client.log and Dir2/client.log differ
Files Dir1/file02 and Dir2/file02 differ
Files Dir1/file03 and Dir2/file03 differ
Only in Dir2: file04
Files Dir1/subdir1/file12 and Dir2/subdir1/file12 differ
Files Dir1/subdir2/file22 and Dir2/subdir2/file22 differ
Only in Dir2/subdir2: file23
Only in Dir1: subdir3

Excluding Specific File Types

The --exclude option allows filtering out unwanted files from comparison:

diff --brief --recursive Dir1 Dir2 --exclude '*.log'
Files Dir1/file02 and Dir2/file02 differ
Files Dir1/file03 and Dir2/file03 differ
Only in Dir2: file04
Files Dir1/subdir1/file12 and Dir2/subdir1/file12 differ
Files Dir1/subdir2/file22 and Dir2/subdir2/file22 differ
Only in Dir2/subdir2: file23
Only in Dir1: subdir3

Common diff Options

Option Description
--brief Show only whether files differ, not the differences
--recursive Compare subdirectories recursively
--exclude=PATTERN Exclude files matching the pattern
--ignore-case Ignore case differences in file names

Terminal File Managers

Midnight Commander (mc)

Midnight Commander provides built-in directory comparison through the Command ? Compare Directories menu or Ctrl+X D shortcut. It offers three comparison modes:

  • Quick Compare only file names and sizes

  • Size only Compare file names and sizes

  • Thorough Compare timestamps, sizes, and contents

Vifm File Manager

Vifm offers more advanced comparison features with the :comparedir command. It performs recursive comparison by default and highlights differences visually in both panels.

:comparedir

Alternative Command-Line Tools

Using rsync for Comparison

The rsync command with --dry-run option shows what would be synchronized:

rsync -avun --delete Dir1/ Dir2/

Using find and comm Commands

Generate and compare file lists using standard utilities:

find Dir1 -type f | sort > list1.txt
find Dir2 -type f | sort > list2.txt
comm -3 list1.txt list2.txt

GUI Applications

Meld

Meld is a powerful graphical directory comparison tool that provides:

  • Visual side-by-side directory comparison

  • File content comparison by double-clicking

  • Filtering options by file type or pattern

  • Choice between content-based or timestamp-based comparison

meld Dir1 Dir2

Other GUI Tools

Tool Features
KDiff3 Three-way comparison, merge capabilities
Kompare KDE-based diff viewer with directory support
DiffMerge Commercial tool with advanced merge features

Performance Considerations

When comparing large directories, consider these factors:

  • Content vs. Metadata Comparing file contents is slower than comparing only timestamps or sizes

  • Network Storage Comparisons over network filesystems take significantly longer

  • File Exclusion Use --exclude patterns to skip unnecessary files like logs or temporary files

Conclusion

Linux provides multiple approaches for directory comparison, from the versatile diff command to sophisticated GUI tools like Meld. The choice depends on your specific needs: command-line tools offer automation potential, while GUI applications provide better visualization for complex comparisons.

Updated on: 2026-03-17T09:01:38+05:30

2K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements