すべての記事

Macで2つのフォルダを比較して違いを見つける方法

· 9分で読めます

Finderには2つのフォルダを比較する機能がありません。フォルダを外付けディスクやNAS、クラウドにコピーしたあと、そのコピーが完全かどうか確かめたいとき。あるいはプロジェクトの2つのバージョンを見比べて、何が変わったか知りたいとき。Macでは3つの方法があります。ターミナルのdiffコマンド、Appleの「FileMerge」アプリ(Xcodeに付属)、そしてFolia Filesのような比較ツールを備えたファイルマネージャです。どの方法でも、片方のフォルダにしかないファイルと、両方にあるのに中身が違うファイルがわかります。

Finderでは違いがわからない理由

Finderでいちばん近いのは、それぞれのフォルダで情報を見る(⌘I)を開き、サイズと項目数を確かめることです。数字が一致すれば、たぶん同じフォルダです。ただし証明にはなりません。中身が変わってもサイズが同じままのことがあるからです(テキストファイルの1文字を直しただけ、など)。数字が違っても、どのファイルが足りないのかはわかりません。あとは2つのフォルダを並べて開き、名前をひとつずつ確認するしかありません。

ターミナルのdiffで2つのフォルダを比較する

macOSにはdiffコマンドが入っていて、2つのオプションを付けるとフォルダ全体を比較できます。

diff -rq ~/Pictures/Iceland /Volumes/Backup/Iceland

-rはすべてのサブフォルダの中まで調べ、-qはファイルごとの変更内容を表示せず、違うファイルの名前だけを報告します。パスを入力したくなければ、diff -rq と入力してから、Finderで各フォルダをターミナルのウインドウにドラッグします。

結果には2種類の行が出ます。

Files /Users/alex/Pictures/Iceland/IMG_4021.jpg and /Volumes/Backup/Iceland/IMG_4021.jpg differ
Only in /Users/alex/Pictures/Iceland: IMG_4048.jpg

Only inは、片側にしかないファイルやフォルダです(フォルダの場合、中身は表示されません)。Files … differは、同じ名前・同じ場所のファイルが両側にあるものの、中身が違うという意味です。diffが何も表示しなければ、2つのフォルダには同じファイルが同じ内容で入っています。

知っておきたいこと:

  • diffはファイルを読んで比較します。そのため正確ですが(日付は関係ありません)、大きな写真・ビデオのライブラリやネットワークドライブでは時間がかかります。
  • Finderが作る隠しファイル.DS_Storeは、コピーごとに違っていることがよくあります。-x .DS_Storeで除外しましょう。
  • ファイルを一切読まずに名前だけを確かめるなら(遅いディスクでもすぐ終わります)、2つのファイル一覧を比較します。
diff <(cd ~/Pictures/Iceland && find . | sort) <(cd /Volumes/Backup/Iceland && find . | sort)

<で始まる行は1つ目のフォルダにだけ、>で始まる行は2つ目のフォルダにだけあるファイルです。

FileMergeでフォルダを比較する

FileMergeはApple純正の比較アプリです。無料ですが、Appleの開発ツールであるXcodeに付属していて、Mac App Storeからの大きなダウンロードになります。軽いCommand Line Toolsには含まれていません。Xcodeをインストールしたら:

  1. XcodeのメニューXcode › Open Developer Tool › FileMergeから開きます(Xcodeは英語のみです)。ターミナルでopendiffのあとに2つのフォルダを指定しても開けます。
  2. 左と右のフォルダを選んで、Compareをクリックします。

FileMergeは両方のフォルダのファイルを一覧にします。同一のファイルはグレー、違うファイルや片側にしかないファイルは黒で表示されます。ファイルをダブルクリックすると、2つのバージョンを1行ずつ比べられます。ソースコード向けのツールなので、テキストファイルなら何が変わったか正確にわかりますが、写真やビデオ、PDFでは違うということしかわかりません。

Folia Filesで2つのフォルダを比較する

Folia Filesには比較ツールがあり、結果を並べ替えできる表で示し、足りないファイルをどちら向きにもコピーできます。Webサイト版とMac App Store版の両方に入っています。

  1. 2つのフォルダを2つのパネルに並べて開きます(Macで2つのフォルダを並べて表示する方法)。必須ではありませんが、比較ツールは最初の2つのパネルのフォルダから始まります。
  2. ツール › 比較…(⇧⌘K)を選ぶか、ツールバーのツールをクリックしてから比較をクリックします。ツールはタブで開きます。
  3. 左と右のフォルダを確認します。選択…で別のフォルダを選べます。あいだの矢印で左右を入れ替えられます。
  4. 比較をクリックします。

タブで開いたFolia Filesの比較ツール:左はピクチャの「アイスランド 2026」フォルダ、右はpCloud上のそのコピー。異なる6件、左のみ8件、右のみ3件を、左右それぞれのサイズと日付とともに表示

各ファイルには、次の4つの状態のどれかが付きます。

  • 異なる:両方のフォルダにあるが、同じではない
  • 左のみと右のみ:もう一方のフォルダにない
  • 同一:両方のフォルダで同じ

一覧の上のボタンは、状態ごとのファイル数を示し、一覧を絞り込みます。同一のファイルは最初は非表示なので、見えているのは確認が必要なものだけです。同一のファイルも見たいときは同一をクリックします。左、変更あり(左)、右、変更あり(右)の列には左右それぞれのサイズと日付が出るので、どちらのコピーが新しいかがわかります。

比較ツールの上部:2つのフォルダ、「内容を比較」と「非表示ファイル」のオプション、件数付きの4つの状態ボタン

速さか、正確さか

標準では、Folia Filesはファイルの中身を読みません。サイズと変更日が同じ(誤差2秒以内)なら同一とみなします。何千枚もの写真でもすぐに終わります。

日付が当てにならないときは、内容を比較(低速、正確)をオンにします。元の日付を保たずに作られたコピー(たとえば-pなしのcpでコピーしたものや、クラウドのWebサイトからダウンロードし直したもの)では、すべてのファイルが異なるになってしまいます。このオプションをオンにすると、サイズが同じファイルはSHA-256のフィンガープリントで比較され、日付は無視されます。サイズが違うファイルは常に異なるです。

ほかのルール:

  • 両側にあるサブフォルダ自体は一覧に出ません。その中のファイルが、フォルダ内のパス付きで表示されます。
  • 片側にしかないフォルダは、中身を展開せずにフォルダとして1行で表示されます。
  • 隠しファイルは、非表示ファイルをオンにしない限り対象外です。Finderの.DS_Storeは常に無視されます。
  • ファイルはパスで対応づけられます。片方のフォルダで名前を変えたファイルは、左のみ(一方の名前)と右のみ(もう一方の名前)の2行になります。

足りないファイルをコピーする

行を選び(複数なら⌘クリックか⇧クリック)、ツール下部の選択項目を右へコピー →または← 左へをクリックします。同じコマンドは右クリックメニューにもあり(右へコピー →、← 左にコピー)、Folia Filesの左側に表示とFolia Filesの右側に表示を選ぶと、アクティブなパネルでそのファイルの場所を開きます。

  • 足りないサブフォルダは、もう一方に作られます。
  • コピー先にすでにファイルがある場合(異なるファイル)、Folia Filesがどうするか尋ねます。標準は両方とも残すです。新しい場合はコピーするファイルのほうが新しいときだけ置き換え、置き換えるは新しいファイルのコピーが完了してから古いほうをゴミ箱に入れ、スキップは何もしません。
  • コピーが終わると、比較がもう一度実行されます。コピーしたファイルは変更日も保たれるので、通常は同一になって一覧から消えます。これらのコピーは、ほかのコピーと同じく操作の履歴に記録されます。

ファイルの中で何が変わったかを見る

異なるファイルをダブルクリックするか、右クリックして差分を表示を選びます。ツールがファイル表示に切り替わり、テキストファイルの2つのバージョンを1行ずつ左右に並べて表示します。削除された行は赤、追加された行は緑で、追加・削除された行数も出ます。写真やPDFなどほかのファイルでは、同一かどうかをサイズとともに表示します。

どれを使えばいいか

  • ターミナルに慣れていて、すばやく正確に確かめたいなら:diff -rq
  • コードやテキストファイルの2つのバージョンを比べたい、Xcodeもある:FileMerge
  • コピーやバックアップが完全か確かめて、その場で直したい(とくに写真や書類):Folia Filesの比較ツール

毎週同じ差分を手でコピーしているなら、同期に任せましょう。Macで2つのフォルダを同期させる方法をご覧ください。これから行うコピーについては、Folia Filesがコピーしながら各ファイルを検証することもできます。設定 › ファイルとネットワーク › ほかのディスクにコピーしたすべてのファイルを検証(読み戻して比較、低速)をオンにしてください。