スポンサーリンク
diffの-rで差分のあったファイルを一覧で取得
dir01とdir02のディレクトリ間で下記のように差分があったとします。
※MACターミナル(BSD系)での動作確認です。
$ diff -r dir01 dir02 diff -r dir01/in.txt dir02/in.txt 1d0 < diff \ No newline at end of file diff -r dir01/in2.txt dir02/in2.txt 0a1 > diff \ No newline at end of file
下記のようにすると、ワンライナーで差分のあったファイルを取得できました。
$ diff -rq dir01 dir02 | awk '{print $2}' | xargs -I path basename path in.txt in2.txt
スポンサーリンク
diff -rqとawkとbasenameを組み合わせる
上記の解説です。
まず、diff -rqオプションで、差分の内容を非表示にします。
参考:diffの-qオプションで差分のあるファイルのみ表示(差分の内容は非表示
$ diff -rq dir01 dir02 Files dir01/in.txt and dir02/in.txt differ Files dir01/in2.txt and dir02/in2.txt differ
そして、awkで2行目のみを抽出します。
参考:awkの$0,$1,$2,$3,変数で列の操作
$ diff -rq dir01 dir02 | awk '{print $2}' dir01/in.txt dir01/in2.txt
そして、xargsとbasenameでファイル名のみを抽出します。
$ diff -rq dir01 dir02 | awk '{print $2}' | xargs -I path basename path in.txt in2.txt
一覧が出来上がりました。
スポンサーリンク