Linux/Ubuntuで2つのディレクトリの内容を比較する方法
Ubuntuマシン上の2つのフォルダの違いを確認したいと思ったことがあるなら、すぐに圧倒されてしまい、結局は手作業でファイルを調べ尽くしてしまうことに気づいたかもしれません。そこでこのdiff
コマンドの真価が発揮されます。このコマンドはこの種の作業向けに作られており、非常にシンプルですが、効果的な使い方には少しコツがあります。基本的に、一度実行すれば、どのファイルが不足していて、どのファイルが同じで、どこに違いがあるのか、サブディレクトリも含めて、簡単に確認できます。バックアップ、デバッグ、あるいは2つのディレクトリの類似点や相違点を知りたいという好奇心を満たすのに最適です。これらはすべてターミナルから行えます。
Ubuntuで2つのフォルダを比較する方法
再帰オプションと簡易オプションを指定したdiffコマンドの使用
これは最も一般的な方法で、ほとんどの環境でうまく機能します。基本的な考え方は、-qおよび-rdiff
オプションをつけて実行することです。これらのオプションは、diff にファイルの違い(どのように異なるかではなく)のみを報告させ、それをすべてのサブフォルダにわたって再帰的に実行します。例えば、
diff -qr ~/folder1 ~/folder2
このコマンドは、ホームディレクトリ内のfolder1とfolder2を/home/username/Projects/folder1
比較します。作業中のディレクトリのパスは入れ替え可能です。設定によっては、特に正しいディレクトリにいない場合は、のようにフルパスで指定する必要があるかもしれません。
役立つ理由: 異なるファイルや欠落しているファイルにすぐにフラグを付けるので、ディレクトリの全体的な状態を把握するには十分です。
使用する場合: 簡単な概要を確認したい場合。差分のすべての行を確認する必要はなく、相違点の概要だけを確認したい場合。
結果:Only in folder1: file.txt
または のような行が表示されますFiles folder1/file.txt and folder2/file.txt differ
。
同じフォルダに見えても、微妙な違いがある場合があります。このコマンドは、そういった違いを難なく検出します。ある環境では明確な違いが分かりましたが、別の環境では出力が少々大きすぎるという結果になりました。これはデータの量にもよります。
コンテンツの変更の詳細な差分を表示する
違いのある行など、より詳しい情報が必要な場合は、-qオプションを省略して、次のコマンドを実行してください。
diff -r ~/folder1 ~/folder2
この機能を使うと、同一ではないファイル内の行ごとの差異が表示されます。必ずしも必要なわけではありませんが、コードや設定のどこが変更されたのかを正確に特定したいときに非常に役立ちます。
非常に大きなフォルダーの場合、出力が大量になる可能性があることに注意してください。場合によっては、出力をファイルにリダイレクトするか、GUI ツールを使用する方がよいこともありますが、ほとんどの簡単なチェックでは問題ありません。
追加のヒントとトラブルシューティング
- パスは重要です。同じ場所にいない場合は、正しいディレクトリを絶対パスと比較していることを常に再確認してください。
- 出力にノイズが多すぎる場合は、–briefフラグを追加して、さらにシンプルな結果を取得します。
- また、特定のニーズに合わせてさまざまなフラグを確認するには、man diffなどの他のオプションを調べることもできます。
- 場合によっては、権限またはシンボリックリンクによって問題が発生することがあります。必要に応じてコマンドを実行するか
sudo
、フォルダーのアクセス権を再確認してください。
diff --brief -r folderA folderB
まとめ
これで、Ubuntuでディレクトリを素早く比較するための強力な基盤が手に入るはずです。完璧ではありませんが(フォルダが巨大な場合は出力が少し重くなることがあります)、信頼性が高く、高速で、追加のアプリを必要としません。一度使い慣れれば、今までどうやって使っていたのか不思議に思うでしょう。
よくある質問
diff コマンドは具体的に何をするのでしょうか?
ファイルを行ごとに比較し、違いを表示します。ディレクトリを指定すると、その中のすべてをスキャンするので、手動でファイルを一つ一つ開かなくても、不足しているファイル、新しいファイル、変更されたファイルなどを簡単に見つけることができます。
特定のファイルまたはサブフォルダーだけを比較できますか?
はい、もちろんです。diff コマンド内で、diff file1.txt file2.txt
または のように、2つのファイルまたはフォルダへの相対パスを指定するだけですdiff -r folderA/subfolder folderB/subfolder
。
フォルダーを比較するためのグラフィカルな代替手段はありますか?
はい。MeldやBeyond Compareのようなツールを使えば視覚的に確認できるので、コマンドラインをクリックするよりも簡単かもしれません。ただし、簡単な確認であれば、ターミナルで直接入力するだけでも十分です。
- 比較する前に、 lsまたはファイル マネージャーを使用してディレクトリを再確認してください。
- ディレクトリが非常に大きい場合は、出力をフィルタリングするか、さらにオプションを追加することを検討してください。