生成new, old的 shell script
#!/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的更多相关文章
- 这些年我们一起搞过的持续集成~Jenkins+Perl and Shell script
这些年我们一起搞过的持续集成~Jenkins+Perl and Shell script ##转载注明出处:http://www.cnblogs.com/wade-xu/p/4378224.html ...
- shell script入门
从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁.用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操 ...
- bash shell学习-shell script基础 (笔记)
A chain no stronger than its weakest link. "一着不慎,满盘皆输" 参考资料:鸟哥的Linux私房菜 基础学习篇(第三版) Linux ...
- shell及脚本4——shell script
一.格式 1.1 开头 必须以 "# !/bin/bash" 开头,告诉系统这是一个bash shell脚本.注意#与!中间有空格. 二.语法 2.1 数值运算 可以用decla ...
- shell script
一.shell script的编写与执行 1.shell script 的编写中还需要用到下面的注意事项: a.命令的执行是从上到下,从左到右地分析与执行 b.命令.参数间的多个空白都会被忽略掉 c. ...
- (copy) Shell Script to Check Linux System Health
source: http://linoxide.com/linux-shell-script/shell-script-check-linux-system-health/ This article ...
- shell script练习
执行脚本的几种方式: 1. sh a.sh 或者 bash a.sh 调用的是 /bin/bash 进程执行的,所以脚本不需要执行权限. 2. 直接使用绝对路径执行, /home/script/a ...
- CentOS Linux下一个tomcat起停,查看日志的shell script
CentOS 的tomcat安装目录:/usr/local/tomcat vi MyTomcatUitl.sh 创建文件chmod u+x MyTomcatUtil.sh 赋执行 ...
- 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 ...
随机推荐
- 程序设计入门——C语言 第4周编程练习 2 念整数(5分)
题目内容: 你的程序要读入一个整数,范围是[-100000,100000].然后,用汉语拼音将这个整数的每一位输出出来. 如输入1234,则输出: yi er san si 注意,每个字的拼音之间有一 ...
- html,css,js加载顺序
1.js放在head中会立即执行,阻塞后续的资源下载与执行.因为js有可能会修改dom,如果不阻塞后续的资源下载,dom的操作顺序不可控. 正常的网页加载流程是这样的. 浏览器一边下载HTML网页,一 ...
- json和xml数据的解析
一 json数据 1一条json就像一个对象,也想像OC中的数组,且内嵌了很多键值对字典 {"name" : "jack", "age" : ...
- git: windows git ssh keys生成
http://blog.csdn.net/lsyz0021/article/details/52064829 当我们使用github或者bitbucket等仓库时我们有可能需要ssh认证,所以需要生成 ...
- Mybatis 批量insert
@Override public int insertHouseTypeScene(int htid, String name, String icon,int sort, List<House ...
- ListView.DragEnter触发不了
经过千百度的搜索之后,终于找到了一点线索,原文是:https://msdn.microsoft.com/en-us/magazine/mt185571.aspx 有能力的可以参阅原文,想省事的可以等待 ...
- CXF支持 SOAP1.1 SOAP1.2协议
SOAP协议分为两个版本 1.1 1.2 默认支持1.1 实现方式: 1.编写接口 import javax.jws.WebService; @WebService public inte ...
- Windows下Apache的优化
(1)首选查看apache的工作模式 windows下的查看apache的工作模式命令: httpd -l 如果列出mod_win32.c,则表示是 win32.c 工作方式. 列出的全部内容如下所示 ...
- hdu 4635 Strongly connected
http://acm.hdu.edu.cn/showproblem.php?pid=4635 我们把缩点后的新图(实际编码中可以不建新图 只是为了概念上好理解)中的每一个点都赋一个值 表示是由多少个点 ...
- Node.js 常用工具 util
util 是一个Node.js 核心模块,提供常用函数的集合,用于弥补核心JavaScript 的功能 过于精简的不足. util.inherits util.inherits(constructor ...