ディレクトリ内の差分をとる

2010年4月12日

<c:\xampp\htdocs\test\aaa\> と <c:\xampp\htdocs\test\bbb\> のディレクトリを下層も含めて比較したいが、下層のディレクトリが多くてWinMergeみたいな比較ツールじゃ時間がかかる!!

――という場合は、Cygwinを使うと楽です。

  1. Cygwinを起動する。
  2. cdコマンドで、差分をとりたいフォルダがある場所へ移動。

    例: $ cd /cygdrive/c/xampp/htdocs/test

  3. diffコマンドで比較し、<diff.txt> というファイルに結果を出力。

    例: $ diff -qr aaa bbb > diff.txt

  4. 結果が表示されるまで待つ。diffコマンド実行後に $ が出力されて、再びコマンドが入力できるようになっていれば終了。
  5. 差分があれば、以下のように表示される。実際になにが違うのかは、そのファイルやディレクトリをWinMergeなどで比較する。

    Files aaa/xxx/index.html and bbb/xxx/index.html differ
    Only in aaa/yyy/: 01

    ※それぞれ以下の意味。

    • <aaa/> と <bbb> で <xxx/index.html> の内容が違う。
    • <aaa/> の <yyy/> にだけ、<01xxx> というディレクトリがある。

おまけ

diffの後のオプションは、以下のとおりです。

-q
ファイルが同じかどうかだけ表示する
-r
サブディレクトリも比較する

Category

Archives