#!/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. Xcode7 创建HTTP请求报错

    最近在Xcode 7中向服务器发送请求访问JSON数据时, 控制台打印了以下错误信息: Application Transport Security has blocked a cleartext H ...

  2. WEB项目 后台接收前端数组

    //保存区域选择的设备 $scope.saveDevice = function(){ var device = []; $("input[type='checkbox']:checked& ...

  3. Laravel 5 数据库迁移文件示例

    php artisan make:migration create_stocks_table 在项目根目录执行上面的命令后,会在database/migrations目录下生成2016_06_03_1 ...

  4. selenium 安装与 chromedriver安装

    直接使用pip安装 pip slenium 用 Chrome 浏览器来测试   from selenium import webdriver browser = webdriver.Chrome() ...

  5. 解决安装vc2005运行库时提示Command line option syntax error.Type Command/?for Help

    安装vc2005运行库时提示 这是因为它要自解压到用户的临时文件夹下,如果用户名中带中文,就会报错. 简单的解决方法是,手动解压之,再安装 当然,你也可以修改用户名或者再新建个用户.

  6. CodeForces #369 div2 D Directed Roads DFS

    题目链接:D Directed Roads 题意:给出n个点和n条边,n条边一定都是从1~n点出发的有向边.这个图被认为是有环的,现在问你有多少个边的set,满足对这个set里的所有边恰好反转一次(方 ...

  7. Foundation框架—集合

    Foundation框架—集合 一.NSArray和NSMutableArray (一)NSArray不可变数组 (1)NSArray的基本介绍 NSArray是OC中使用的数组,是面向对象的,以面向 ...

  8. Node.js 创建HTTP服务器

    Node.js 创建HTTP服务器 如果我们使用PHP来编写后端的代码时,需要Apache 或者 Nginx 的HTTP 服务器,并配上 mod_php5 模块和php-cgi. 从这个角度看,整个& ...

  9. 关于一些学习html和css的笔记

    一.Html简介 全写: HyperText Mark-up Language  译名: 超文本标识语言  简释:一种为普通文件中某些字句加上标示的语言,其目的在于运用标签(tag)使文件 达到预期的 ...

  10. 第1章 Express MongoDB 搭建多人博客

    学习环境 Node.js : 0.10.22 + Express : 3.4.4 + MongoDB : 2.4.8 + 快速开始 安装 Express express 是 Node.js 上最流行的 ...