ファイルやディレクトリを比較するdiffコマンド

二つのファイルに、比較してどこに違いがあるのか確かめる場合、viやemacsなどのエディタで二つのファイルを開いたり、lessやcatコマンドで開いてから比較することができます。二つのディレクトリを比較する場合は、lsコマンドで、お互いに共通に存在するファイルやディレクトリを調べれば比較することができます。

しかし、これらの方法は、ユーザの注意力に依存しており、ミスの原因になります。また大きいサイズのいファイルや、たくさんのファイルを含んでいるディレクトリの場合、自力で比較するのは現実的ではありません。

diffコマンドでファイルを比較

二つのファイルを比較する機能が備わった開発環境やツールはたくさん存在すると思います。ただ、手ごりに二つのファイルを比較したいときは、ほとんどLinuxディストリビューションに標準で備わっているdiffコマンドという比較を行うコマンドを使います。

diffコマンドで二つのファイルを比較する方法は次の通りです。

diff ファイル1 ファイル2

上記のフォーマットでdiffコマンドを実行すると、ファイル1とファイル2間で差異がある部分を指摘してくれます。diffコマンドは、相違があるかどうか、何行目に相違があるだけではなく、実際に、相違がある文字列を表示してくれるのが特徴です。

ディレクトリの比較もdiffコマンド

diffコマンドはファイル内容の比較だけではなく、ふたつのディレクトリに含まれるファイルやディレクトリを比較することもできます。ディレクトリ内の比較もファイルの比較のときと同じです。

diff ディレクトリ1 ディレクトリ2

上記のコマンドを実行すると、含まれているファイルをファイル名で比較して、ディレクトリ1だけ、もしくはディレクトリ2だけに含まれているファイル名を教えてくれます。もし、同じファイル名で、中身が違うファイルであっても、diffコマンドはファイル名で識別を行うので、ファイル名が同じ場合は、相違が無いと判断します。