スポンサーリンク
diffの-xオプションで特定のファイルを除外
-rオプションで再帰的にdiffする時に、特定のファイルを除外したい場合が多々ありました。
diffには-xオプションが備わっています。
※MACターミナル(BSD系)での動作確認です。
diffの-rオプションで再帰的に2つのディレクトリ以下のファイルの差分をとることができます。
$ diff -r dir01 dir02
diffの-xオプションで除外できます。下記は、file.txtをdiff対象から除外しています。
$ diff -r dir01 dir02 -x file.txt
拡張子がexのファイルを除外したい場合です。
$ diff -r dir01 dir02 -x "*.ex"
複数の除外対象を設定したい場合です。-xオプションを複数並べていきます。
$ diff -r dir01 dir02 -x "*.ex" -x "*.txt"
スポンサーリンク
サンプルコード
例えば、下記のディレクトリ構成があったとします。
$ tree . ├── dir01 │ ├── 01 │ │ ├── file.ex │ │ └── file.txt │ └── file.txt └── dir02 ├── 01 │ ├── file.ex │ └── file.txt └── file.txt 4 directories, 6 files
下記が実行結果になります。
除外対象なしです。
$ diff -r dir01 dir02 diff -r dir01/01/file.ex dir02/01/file.ex 1c1 < --- > line-diff diff -r dir01/01/file.txt dir02/01/file.txt 1c1 < --- > line-diff
file.txtをdiff対象から除外。
$ diff -r dir01 dir02 -x file.txt diff -r -x file.txt dir01/01/file.ex dir02/01/file.ex 1c1 < --- > line-diff
拡張子がexのファイルをdiff対象から除外。
$ diff -r dir01 dir02 -x "*.ex" diff -r -x '*.ex' dir01/01/file.txt dir02/01/file.txt 1c1 < --- > line-diff
拡張子がexとtxtのファイルをdiff対象から除外。
$ diff -r dir01 dir02 -x "*.ex" -x "*.txt"
スポンサーリンク