#!/bin/bash
#usage: ./create_dts_diff_v2.x.sh path1 path2
__new_dir=$1
__old_dir=$2 #===========================================================
#WARNING:
#do *NOT* modify below
#===========================================================
work_dir=`pwd`
pushd $__new_dir > /dev/null || exit
new_dir=`pwd`
popd > /dev/null || exit
pushd $__old_dir > /dev/null || exit
old_dir=`pwd`
popd > /dev/null || exit
cd $work_dir result_dir=DIFF_`date +"%Y%m%d_%H%M%S"`
result_filename=$work_dir/$result_dir/result.txt
result_filename_temp=$work_dir/$result_dir/result.txt.tmp
new_dir_len=${#new_dir}
old_dir_len=${#old_dir}
echo "begin time: `date`"
mkdir $result_dir
echo "new dir: $new_dir"
echo "old dir: $old_dir"
echo "create dir $result_dir, now scan directory......" if [[ ! -d ${new_dir} ]];then
echo "new: $new_dir not exist"
exit
fi
if [[ ! -d ${old_dir} ]];then
echo "old: $old_dir not exist"
exit
fi filt_file() {
sed "/$1/d" $result_filename > $result_filename_temp
cp -f $result_filename_temp $result_filename
rm -f $result_filename_temp
} diff -x .git -r -q $new_dir $old_dir > $result_filename
filt_file .repo
filt_file .git
filt_file .svn
echo "scan directory finish"
echo ""
mkdir -p $result_dir/_NEW
mkdir -p $result_dir/_OLD count=`wc $result_filename | awk '{print $1}'`
current=0 cat $result_filename | while read line
do
current=`expr $current + 1`
if echo $line | grep Only; then
path1=`echo $line| awk -F '[ :]' '{print $3}'`
filename1=`echo $line| awk -F '[ :]' '{print $5}'`
if echo $line | grep $new_dir > /dev/null; then
filename2=${path1:new_dir_len+1}
#echo "in new dir"
#echo "path1: $path1, filename1: $filename1"
#echo "filename2: $filename2"
mkdir -p $result_dir/_NEW/$filename2
cp -fr $path1/$filename1 $result_dir/_NEW/$filename2/$filename1
else
filename2=${path1:old_dir_len+1}
mkdir -p $result_dir/_OLD/$filename2
cp -fr $path1/$filename1 $result_dir/_OLD/$filename2/$filename1
#echo "in old dir: $filename2"
#echo "path1: $path1, filename1: $filename1"
fi
fi
if echo $line | grep Files; then
filename1_new=`echo $line | awk '{print $2}'`
filename1_old=`echo $line | awk '{print $4}'`
filename2_new=`dirname $filename1_new`
filename2_old=`dirname $filename1_old`
filename3_new=`basename $filename1_new`
filename3_old=`basename $filename1_old`
filename4_new=${filename2_new:new_dir_len+1}
filename4_old=${filename2_old:old_dir_len+1} mkdir -p $result_dir/_NEW/$filename4_new
mkdir -p $result_dir/_OLD/$filename4_old
cp -f $filename1_new $result_dir/_NEW/$filename4_new
cp -f $filename1_old $result_dir/_OLD/$filename4_old
fi
done
echo ""
echo "all finish"

  

生成new, old的 shell script的更多相关文章

  1. 这些年我们一起搞过的持续集成~Jenkins+Perl and Shell script

    这些年我们一起搞过的持续集成~Jenkins+Perl and Shell script ##转载注明出处:http://www.cnblogs.com/wade-xu/p/4378224.html ...

  2. shell script入门

    从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁.用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操 ...

  3. bash shell学习-shell script基础 (笔记)

    A chain no stronger than its weakest link. "一着不慎,满盘皆输" 参考资料:鸟哥的Linux私房菜 基础学习篇(第三版)  Linux ...

  4. shell及脚本4——shell script

    一.格式 1.1 开头 必须以 "# !/bin/bash"  开头,告诉系统这是一个bash shell脚本.注意#与!中间有空格. 二.语法 2.1 数值运算 可以用decla ...

  5. shell script

    一.shell script的编写与执行 1.shell script 的编写中还需要用到下面的注意事项: a.命令的执行是从上到下,从左到右地分析与执行 b.命令.参数间的多个空白都会被忽略掉 c. ...

  6. (copy) Shell Script to Check Linux System Health

    source: http://linoxide.com/linux-shell-script/shell-script-check-linux-system-health/ This article ...

  7. shell script练习

    执行脚本的几种方式: 1. sh a.sh 或者  bash a.sh  调用的是 /bin/bash 进程执行的,所以脚本不需要执行权限. 2. 直接使用绝对路径执行, /home/script/a ...

  8. CentOS Linux下一个tomcat起停,查看日志的shell script

    CentOS 的tomcat安装目录:/usr/local/tomcat vi MyTomcatUitl.sh          创建文件chmod u+x MyTomcatUtil.sh   赋执行 ...

  9. Shell script for logging cpu and memory usage of a Linux process

    Shell script for logging cpu and memory usage of a Linux process http://www.unix.com/shell-programmi ...

随机推荐

  1. block(闭包)

    使用方式 1定义为类的属性 最后用来发布通知,执行block即可 甚至同时发送数据参数,给方法调用者,这样返回数据比返回值形式,更好, 因为这样传参,不是同步的,而是异步响应式的,更加灵活安全. 2定 ...

  2. ionic build android--> Build failed with an exception. Execution failed for task ':processDebugResources'.

    执行 ionic build android,   ionic 自动化生成安卓apk包, 出现以上报错的原因为:打包的文件中含有中文名,把中文名的文件去掉或改名即可打包成功.

  3. js时间格式转换

    在javascript中直接输出Date得到的结果是这样的: function date(){ var date = new Date(); alert(date); } 结果是:Mon Jun 15 ...

  4. 从零搭建mongo分片集群的简洁方法

    一.目录 1.mongo路径,config数据路径,shard数据路径

  5. 转:PHP--获取响应头(Response Header)方法

    转:http://blog.sina.com.cn/s/blog_5f54f0be0102uvxu.html PHP--获取响应头(Response Header)方法 方法一: ========== ...

  6. Frame练习-打开图片

    import java.awt.EventQueue; import java.awt.event.*; import java.io.*; import javax.swing.*; public ...

  7. py 抓取中文网址

  8. 图表控件的学习===》hightChart 和 Chartjs的使用

    hightChart : 比较旧的图表控件   商业需要授权 Chartjs 免费开源 刚开始使用了下 hightchart 然后参考示例 建了对应的参数配置的类, 也顺利的集合到后台动态传输.  后 ...

  9. Android studio的深坑 导jar包重复的异常处理

    导包重复这个问题折磨了整整一天!! 第一个方法在gradle文件下看看有没有重复的包  如果有那么一切都是浮云分分钟搞定 ,最可恶的是在gradle里面没有. 在gradle里面找不到的话就要考虑一下 ...

  10. js---html---body标签

    <body bgcolor="背景颜色" background="背景图片" text="文本颜色" link="连接文件颜 ...