Apps

Macでdiffを使って2つのディレクトリの内容を比較する

Macでdiffを使って2つのディレクトリの内容を比較する

ターミナルMac 上の 2 つのフォルダーの違いを確認したり、2 つのディレクトリの内容を比較したりする場合は、強力な diff コマンドを使用して簡単に行うことができます。

このチュートリアルでは、ターミナルを使って2つのディレクトリとその内容を比較する方法を説明します。このコマンドラインアプローチでは、2つの対象フォルダ間の正確な差異を示すファイルが出力されます。

この比較を行うには、コマンドラインツール「diff」を使用します。diffはすべてのMac、Linux、その他のUnixオペレーティングシステムで利用できるため、実質的にクロスプラットフォームでディレクトリを比較できるソリューションとなります。diffは非常に使いやすく、任意の2つのディレクトリの内容を簡単に比較できます。以下の構文に従って操作してください。

diffを使って2つのディレクトリの内容を比較する方法

開始するには、Mac OS でターミナル (/Applications/Utilities/ にあります) を起動し、次のコマンド構文を使用します。

diff -rq directory1 directory2

比較する適切なディレクトリを指定したら、リターンキーを押してください。これにより、directory1とdirectory2を比較するdiffコマンドが実行されます(ファイル名にスペースが含まれるフォルダがある場合は、ファイル名を引用符で囲んで「folder one」としてください)。-rqフラグを使用しているのは、-rはサブディレクトリも含める再帰的な処理を意味し、-qはコマンド出力を差分のみに簡略化するためです。

コマンドのサンプル出力は次のようになります。

$diff -rq directory1 directory2

Only in directory1: example221.txt

Only in directory1: SuperSecretDifferentFile.rtf

Only in directory2: AmazingScript.py

Only in directory2: MyFavoriteSong.mp3

Only in directory2: MyFavoriteSpecialMovie.mp4

さらに一歩進んで、そのコマンドの出力を、differences.txt というファイルにリダイレクトすることもできます。

diff -rq directory1 directory2 >> differences.txt

実際の印刷結果の例を以下に示します。「old music」と「new music」というフォルダを比較し、「musicfolders.txt」というファイルにこれらの2つのディレクトリ間の差分を表示するコマンド出力を作成したい場合、以下のコマンド構文を使用します。

diff -rq "old music" "new music" >> musicfolders.txt

diffコマンドの出力で作成したファイルを現在の作業ディレクトリで確認します。この場合、ファイルはmusicfolders.txtです。内容は任意のテキストエディタ、コマンドライン、その他の方法で確認できます。テキストファイルを開くと、次のような内容が表示されます。

Only in old music: song1.mp3
Only in old music: song2.mp3
Only in old music: song3.mp3
Only in new music: instrumental1.mp3
Only in new music: instrumental1.mp3

コマンドラインからファイルを表示する場合は、次を試してください。

more musicfolders.txt

それ以外の場合は、それが含まれているディレクトリに移動して、お気に入りのテキスト エディターで開きます。

変更内容をテキストファイルに保存したくない場合は、コマンドの出力リダイレクトを省略してください。ただし、出力を「more」などのコマンドにパイプすると、スキャンしやすくなります。

diff -rq "old music" "new music" | more

diff コマンドは非常に強力で、他にも多くのオプションが利用可能です。diff の使用方法や利用可能なさまざまな機能に関する完全な詳細を取得するには、man diff コマンドを使用してください。

このコマンドは、Mac OS X(すべてのバージョン)およびほとんどの Unix ベースの OS で動作することを再度言及しておく価値があります。