find して テキストにフィルタして
最近よく使うようになったのが以下のようなスクリプト
for i in `find directoryA -name '*.html'` do dn=`dirname $i` bn=`basename $i` nd=directoryB/${dn#directoryA/} [ -d $nd ] || mkdir -p $nd cat $i | perl -nlpe 'フィルタするperlスクリプト' > $nd/$bn done
とか、
for i in `grep -r '検索文字列' directoryA` do dn=`dirname $i` bn=`basename $i` nd=directoryB/${dn#directoryA/} [ -d $nd ] || mkdir -p $nd cat $i | perl -nlpe 'フィルタするperlスクリプト' > $nd/$bn done
directoryA の中で条件にマッチしたファイルを取得してきて、変換してdirectoryBに同じディレクトリ構造でperlでフィルタした結果を作成する。
- dn は DirectoryName
- direname コマンドは 引数に渡したファイルパスからディレクトリのパスを取得する。
- bn は BaseName
- basename コマンドは 引数に渡したファイルパスからファイル名だけを取得する
- nd は NewDirectory
- $nd/$bn は 新しいディレクトリ構造のファイルパスを表す
あとはディレクトリごとdiffツールで比較して、間違いないかどうかチェック。