2つの異なるパスでコンテンツを同期するbashシェルスクリプトを作成しようとしています。
私が目指しているアルゴリズムは、次の手順で構成されています
- 与えられた2つの完全な(相対的なパスではなく)パス
- 両方のパスの対応するディレクトリ内のファイル(ファイル名にはオプションでベース名とサフィックスが含まれる場合があります)を再帰的に比較します
- 対応するディレクトリまたはファイルが存在しない場合は、各ファイルを(フォルダのあるパスから)他の対応するフォルダにコピーします。
私はステップ1と2を理解しました
OLD_IFS=$IFS
# The extra space after is crucial
IFS=\
for old_file in `diff -rq old/ new/ | grep "^Files.*differ$" | sed 's/^Files \(.*\) and .* differ$/\1/'`
do
mv $old_file $old_file.old
done
IFS=$OLD_IFS
ありがとう。