Linuxでファイルの差分を確認するdiffコマンド

当ページのリンクには広告が含まれています。

## はじめに
「設定ファイルを変更前と変更後で何が違うのか確認したい」「2つのサーバーの`/etc`配下を比較したい」——こうしたシーンで活躍するのが`diff`コマンドです。テキストファイルの差分を出力する基本コマンドで、patchコマンドと組み合わせれば差分の適用までシームレスに行えます。

diffにはいくつかの出力形式があり、最もよく使われるのは`-u`オプションのunified diff形式です。これはGitなどのバージョン管理システムで採用されている読みやすい形式で、`+`が追加行、`-`が削除行、`@@`が位置情報を表します。

本記事では、diffの基本から実用的な使い方までを整理します。

## 症状・背景
– 設定ファイルの変更履歴を行単位で把握したい
– 2台のサーバーの設定を比較し、差異を洗い出したい
– 自作スクリプトと配布スクリプトの違いを確認したい
– patchファイルを作って別環境に変更を適用したい

[図解画像をここに表示]

## 手順・設定方法
### ステップ1: 基本のdiff出力形式
3つの代表的フォーマットを使い分けます。

“`bash
# デフォルト(normal形式)
diff old.conf new.conf

# unified形式(推奨、Gitと同じ)
diff -u old.conf new.conf

# 文脈付き(context形式)
diff -c old.conf new.conf

# 並列表示(人間が見やすい)
diff -y old.conf new.conf

# 並列表示の幅指定
diff -y -W 160 old.conf new.conf
“`

### ステップ2: ディレクトリ比較
複数ファイルをまとめて比較します。

“`bash
# 2つのディレクトリを再帰的に比較
diff -r dir1/ dir2/

# 差分があったファイル名のみ表示
diff -rq dir1/ dir2/

# 共通ファイルも表示
diff -rs dir1/ dir2/

# 隠しファイルを無視
diff -r –exclude=”.*” dir1/ dir2/

# 特定パターンを除外
diff -r –exclude=”*.log” –exclude=”cache” dir1/ dir2/
“`

### ステップ3: 表示の絞り込みと無視オプション
ノイズを減らして本質的な差分だけを見ます。

“`bash
# 空白を無視
diff -w old.conf new.conf

# 行末の空白だけ無視
diff -b old.conf new.conf

# 空行を無視
diff -B old.conf new.conf

# 大文字小文字を区別しない
diff -i old.conf new.conf

# 全部組み合わせ
diff -uwbB old.conf new.conf
“`

### ステップ4: patchファイルの生成と活用
変更を別環境に適用する流れです。

“`bash
# unified形式でパッチファイルを生成
diff -u original.conf modified.conf > my-changes.patch

# 内容を確認
cat my-changes.patch

# 別環境で適用(patch記事を参照)
patch original.conf < my-changes.patch # ディレクトリレベルのパッチ diff -urN dir1/ dir2/ > directory.patch

# .gitignore的に除外しつつパッチ作成
diff -urN –exclude=”.git” –exclude=”*.log” \
dir1/ dir2/ > clean.patch
“`

## 注意事項
– バイナリファイルの差分は意味不明な出力になる、`-q`オプションでファイル名のみ表示推奨
– 改行コードの違い(CRLF vs LF)で全行差分扱いされることがある、`dos2unix`で前処理
– ファイルが大きすぎる場合は事前にgrepで関心領域を絞ってから比較
– patchで適用するためには必ず`-u`または`-c`オプションで生成する

## まとめ
1. **推奨形式**: `diff -u` のunified形式が読みやすく汎用的
2. **ディレクトリ**: `diff -rq` で差分ファイル名一覧
3. **ノイズ除去**: `-w` で空白、`-B` で空行を無視
4. **patch生成**: `diff -u` の出力をリダイレクトすれば即パッチ
5. **並列表示**: `diff -y` で人間に優しいビュー

関連記事:
– [patchコマンドでファイルにパッチを適用する方法](/articles/linux-patch-command/)
– [vimdiffで対話的に差分を編集する方法](/articles/linux-vimdiff/)
– [colordiffでカラフルな差分表示を行う方法](/articles/linux-colordiff/)

▼ 実践ガイド

【2026年】ネット証券口座の選び方とおすすめ比較 →

用語の意味がわかったら、実際の口座選びのポイントもチェックしてみてください。

※本記事に掲載している情報は、中立的な立場からの情報提供を目的としたものです。掲載している商品・サービスの購入や利用を推奨・強制するものではありません。投資には価格変動リスクが伴い、元本割れが生じる可能性があります。過去の運用実績やシュミレーション結果は、将来の運用成果を保証するものではありません。また、情報の正確性・最新性には十分配慮しておりますが、 内容の完全性や将来の結果を保証するものではありません。最終的な投資判断は、読者ご自身の判断と責任において行っていただくようお願いいたします。本記事の情報を利用したことによって生じたいかなる損害についても、当サイトでは一切の責任を負いかねますので、あらかじめご了承ください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

マネジ局長は、「お金の大辞典」全体を統括する監修者です。

編集者であるマネ辞くんが収集・整理した金融・投資・税制データについて、制度の前提条件やリスク、誤解が生じやすい点がないかをチェックし、「この情報をどう受け取るべきか」という判断軸を補足します。

特定の商品やサービスをすすめる役割ではなく、読者が冷静に考えるためのブレーキ役として設計されています。

お金の判断は急がず、理解してから選ぶ。
それがマネ辞局長の基本スタンスです。

目次