ファイルやディレクトリの差分を知りたい時はないでしょうか?
よくファイルの更新ができたかどうかや、前回からどの箇所が更新されたか調べたい時がございます。
よく利用されるのがツールやアプリを利用した差分を比較する方法ですが、インストールする必要があったり、アプリなどをセキュリティ上入れることができない環境では標準でインストールされている「diff」コマンドが役立ちます。
今回はその「difff」コマンドについて紹介していきます。
この記事でわかる事
・diffコマンドについて使い方がわかる。
目次
diff:コマンドファイル内容の違いを調べ表示する
diffコマンドは2つのファイルの内容の違いを調べ表示してくれます。試しに以下の内容の各ファイルを比較してみます。
まず、次のような内容のfile1とfile2を作成します。
file1の内容
mitsublog@mitsublog:~/デスクトップ$ cat file1
file1
file2
file3
mitsublog@mitsublog:~/デスクトップ$
file2の内容
mitsublog@mitsublog:~/デスクトップ$ cat file2
file1
file3
file3
mitsublog@mitsublog:~/デスクトップ$
それでは、この2つのファイルの違いを調べてみましょう。
2行目に違いがあります。
比較結果
mitsublog@mitsublog:~/デスクトップ$ diff file1 file2
2c2
< file2
---
> file3
mitsublog@mitsublog:~/デスクトップ$
上記で示すように、diffコマンドは、第一引数と第二引数で指定した2つのファイルの内容の違いを調べて表示します。
各ディレクトリ内のそれぞれのファイルの違いを比較しています。
ディレクトリ内のファイルを指定
mitsublog@mitsublog:~/デスクトップ$ diff direfile1/file1 direfile2/file2
2c2
< file2
---
> file3
mitsublog@mitsublog:~/デスクトップ$
このようにファイルの違いを比較することができます。
ディレクトリを比較
diffコマンドは、2つのディレクトリにある同じ名前のファイル同士の違いを調べることもできます。
下記例では各ディレクトリのfile1を比較しています。差分はない状態の比較結果を表示しています。
各ディレクトリのfile1を比較
mitsublog@mitsublog:~/デスクトップ$ diff direfile1/file1 direfile2/file1
mitsublog@mitsublog:~/デスクトップ$
diff:書式
diff [オプション] ファイル1 ファイル2
diff:オプション
主に利用するのは下記となります。
オプション | 説明 |
-i | 大文字と小文字の違いを無視します |
-r | サブディレクトリの違い調べます |
-s | 2つのファイルの内容が同じであれば、その旨を表示します |
-q | ファイルが内容が異なる場合のみ表示します。 |
-w | 全ての空白文字の数の違いを無視します。 |
実行例
2つのファイルfile1とfiile2の違いを調べます
file1とfile2を比較し違いを調べます。
mitsublog@mitsublog:~/デスクトップ$ diff file3 file4
1d0
< file3
2a2
> file54
mitsublog@mitsublog:~/デスクトップ$
2つのディレクトリdir1とdir2の違いを調べます
各ディレクトリの違いを表示します。下記例ではdirefile2にのみfile2というファイルが存在することを示しています。
mitsublog@mitsublog:~/デスクトップ$ diff direfile1 direfile2
direfile2 のみに存在: file2
mitsublog@mitsublog:~/デスクトップ$
-i:大文字と小文字の違いを無視します
mitsublog@mitsublog:~/デスクトップ$ diff -i file3 file4
1d0
< file3
2a2
> file54
mitsublog@mitsublog:~/デスクトップ$
-r:サブディレクトリの違い調べます
itsublog@mitsublog:~/デスクトップ$ diff -r direfile1 direfile2
direfile2 のみに存在: file2
mitsublog@mitsublog:~/デスクトップ$
-s: 2つのファイルの内容が同じであれば、その旨を表示します
mitsublog@mitsublog:~/デスクトップ$ diff -s direfile1/file1 direfile2/file1
ファイル direfile1/file1 と direfile2/file1 は同一です
mitsublog@mitsublog:~/デスクトップ$
-q:ファイルが内容が異なる場合のみ表示します。
mitsublog@mitsublog:~/デスクトップ$ diff -q direfile1/file1 direfile2/file2
ファイル direfile1/file1 と direfile2/file2 は異なります
mitsublog@mitsublog:~/デスクトップ$
w:全ての空白文字の数の違いを無視します。
空白文字の数の違いを無視します。他のオプションと合わせて使用したりします。
mitsublog@mitsublog:~/デスクトップ$ diff -w file3 file4
1d0
< file3
2a2
> file54
mitsublog@mitsublog:~/デスクトップ$
まとめ
今回は以上となります。まとめに入ります。
まとめ
diffコマンドの使い方について紹介しました。
ツールを使わずに標準コマンドでファイル差分を確かめられるのはとても便利です。是非覚えていってください。
当メディアではLinuxに関する記事を執筆しているので、興味ある方はぜひご覧ください。