patchコマンドで差分をマージするときなんかは、diffコマンドの結果はそのまま使えますが、
人が見るとき(主に業務でのレビュー時など)は、1つのファイルに差分が全部出力されると見辛いことがあります。

そこでディレクトリを再帰的に比較し、ファイルごとに差分を出力するスクリプトを作ってみました。
(参考:再帰的にdiffを取って1つのファイルに出力する方法はこちらを参照


■スクリプト(本体)
スクリプトのダウンロード

■スクリプトの実行方法
./diff_dir.sh [変更前ディレクトリ] [変更後ディレクトリ]

■スクリプトの説明
このスクリプトは、ディレクトリ指定で差分を取ることができ、
出力する差分は差分のあるファイルごとに出力されます。

差分を出力するディレクトリは、このスクリプトを実行した時のカレントディレクトリに、「DIFF_output」というディレクトリを作成し、そこに出力します。
この出力先のディレクトリが既にある場合、削除して作り直します。

出力するファイル名は、比較したファイル名に「_DIFF.txt」を付加して出力します。
子ディレクトリに含まれるファイルは、「ディレクトリ名_...」を付加して出力します(処理的には、ファイルパスに含まれるスラッシュをアンダーバーに変換する)。

出力先には、「DIFF_report.txt」というファイル差分の有無だけを出力したファイルを出力します。
ファイルの追加、削除などはこれを参照して確認できます。

■実行時の注意
このスクリプトはbashなどのBシェル系の文法で記載しているため、
/bin/sh が /bin/csh へのリンクになっている環境では、構文エラーになります。
その場合は、1行目(シェバング行と呼ばれ、スクリプトを読むインタプリタを指定する行)を、
#!/bin/bash へ変更してください。


説明は以上ですが、上記で使われている固定値(出力先ディレクトリ名など)は、
スクリプトを編集して自分なりに使ってみてください。

近いうちこのスクリプトの解説も行いたいと思います。
スポンサードリンク