for dir in $(find DIR1 -type d) ;do
newdir=$(echo ${dir} | sed -e "1,1s/^DIR1/DIR3/")
mkdir -p ${newdir}
done
Este bloco acima cria todos os diretórios em DIR1 sob DIR3. Se você estiver criando novos diretórios em DIR1, que não estão em DIR2, você deve executar este snippet quando houver novos diretórios sob DIR1, caso contrário, executá-lo uma vez será suficiente
Então:
for file in $(find DIR1 -type f) ;do
oldfile=$(echo ${file} | sed -e "1,1s/^DIR1/DIR2/")
if [ -f ${oldfile} ]
then
diff ${file} ${oldfile} >/dev/null; r=${?}
if [ $r -ne 0 ]
then
newfile=$(echo ${file} | sed -e "1,1s/^DIR1/DIR3/")
cp ${file} ${newfile}
fi
else
newfile=$(echo ${file} | sed -e "1,1s/^DIR1/DIR3/")
cp ${file} ${newfile}
fi
done