perl 脚本实现简单搜索修改文件并生成diff文件

在已有代码上修改代码一般要生成diff文件来生成patch,从而porting到相关baseline上。

修改文件较少时可以一个个来生成,但是当修改文件较多时就会很耗费工时,所以就想

写一个脚本来减少工时消耗。你只需要关注coding,而不必担心diff文件的生成。

实现的思想只要是:首先搜索以".orig"结尾的文件(这可以通过vim中设置来自动生成),

然后截断.orig来获得修改后的文件。从而生成已"*.diff"结尾的diff文件也可以成为patch。

当把这三个相关文件复制到一个专门存放code文件夹中时,要考虑在coding文件夹中创建

相关目录,目录只能是一级一级创建。所以要用到split来分割。

具体实现如下:

[python] view plaincopy

 1 #!/usr/bin/perl
 2
 3
 4 # create a direction to save coding files
 5 $code = "./coding";
 6 if(-d $code)
 7 {
 8      print "Direction $code already existed. Remove it\n";
 9      `rm -rf $code`;
10 }
11 print  "create $code direction\n";
12 `mkdir $code`;
13
14
15 #Find orig file and modifed file for mkdir diff file
16 foreach $orig_file_name (`find . -name "*.orig" -size +0c`){
17     chomp ($orig_file_name);
18     $file_name = substr($orig_file_name, 0, index($orig_file_name, ".orig"));
19     if(-f $file_name)
20     {
21         $diff_file_name = $file_name.".diff";
22         print "find $file_name\n";
23         print "find $orig_file_name\n";
24         print "create $diff_file_name\n";
25         `diff -c $orig_file_name $file_name > $diff_file_name`;
26
27         @dTree = split(/\//, $orig_file_name);
28         $a = @dTree;
29         $d = $code;
30         for($i = 1; $i < $a - 1; $i++)
31         {
32             $d = "$d/$dTree[$i]";
33             `mkdir $d`;
34         }
35         print "create $d\n";
36         print "copy $file_name, $orig_file_name, $diff_file_name to $d\n";
37         `cp $file_name $d`;
38         `cp $orig_file_name $d`;
39         `cp $diff_file_name $d`;
40     }  

时间: 2024-11-05 14:42:47

perl 脚本实现简单搜索修改文件并生成diff文件的相关文章

eclipse上ndk环境的搭建&amp;&amp;so文件的生成&amp;&amp;jni文件的调用

JNI是java语言提供的Java和C/C++相互沟通的机制,Java可以通过JNI调用本地的C/C++代码,本地的C/C++的代码也可以调用java代码.JNI 是本地编程接口,Java和C/C++互相通过的接口.Java通过C/C++使用本地的代码的一个关键性原因在于C/C++代码的高效性. NDK是一系列工具的集合 .它提供了一些列的工具,帮助开发者快速开发C/C++的动态库,并能自动将so和java应用一起打包成apk.它集成了交叉编译器,并提供了相应的mk文件隔离CPU,平台,ABI等

java文件如何生成Jar文件

C:\Documents and Settings\Administrator>h: H:\>cd text4 H:\text4>jar cvf dsdf.jar H:\text4\新建文件夹 到了文件所在的根目录下,然后执行jar命令既可 当然如果是在eclipse中,则更方便,百度..

Linux下给指定目录下指定文件类型生成md5文件

对指定目录下扩展名为.asset,.manifest,.wem,.bnk的文件计算md5并汇总到指定文件中. md5文件内容格式: 文件名,md5 类似: Audio_Knives_Skill_1_43_9E69E797.wem,bc87ec6bce97e93824a0fdfa39ebafaf Audio_Knives_Skill_1_43_50DB02DB.wem,78d62b1f25c59ddffcfcda75e555e850 Audio_Knives_Skill_2_44_9E69E797

pdf文件流生成pdf文件

protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { Code.Login Starr_model = new Code.Login(); Code.InsuranceModel.InsuranceSegment_Result result = new InsuranceModel.InsuranceSegment_Result(); try { //判断接口请求是否成功 result = C

bootstrap 中是通过写less文件来生成css文件,用什么工具来编写呢?

如果用sublime的话如何实现代码保存后浏览器刷新成最新的代码样式? 或者有什么其他好用的工具? 从网上找了很多方法都实现不了,在线等您答复. 安装 Grunt 安装 Grunt 前,你需要首先下载并安装 node.js (npm 已经包含在内).npm 是 node packaged modules 的简称,它的作用是基于 node.js 管理扩展包之间的依赖关系. 然后在命令行中输入以下命令: 在全局环境中安装 grunt-cli :npm install -g grunt-cli . 进

从模板驱动文件ins生成cls文件

在当前目录下,启动cmd程序,输入以下指令: latex acmart.ins

清理configure脚本生成的文件

今天在修改dovecot的代码时遇到一个问题,需要重新执行configure脚本,想先把之前configure生成的文件删除掉. 结果看了configure --help没有找到可以用的命令,最后搜了Google才发现,可以用 make distclean 命令来实现. 纪录之 原文地址:https://www.cnblogs.com/lit10050528/p/8946893.html

根据yaml测试用例自动生成py文件

一.目前使用的接口自动化框架在编写测试用例时,需要编写yaml文件,然后在写对应的脚本文件,每个接口的py文件,大同小异,在前面几天的编写的过程中,感觉很繁琐 于是就产生了能不能根据编写完毕的yaml文件自动生成py文件的想法,经过一番功夫,终于搞定,说明如下: 二.根据固定格式编写yaml测试用例文件 1.yaml文件名字格式: 2.yaml内容格式: 三.yaml文件编写完毕后,运行common文件下create_py文件 运行create_py函数需要2个参数,第一个参数是编写完毕的yam

使用Pull解析器生成XML文件

有些时候,我们需要生成一个XML文件,生成XML文件的方法有很多,如:可以只使用一个StringBuilder组拼XML内容,然后把内容写入到文件中:或者使用DOM API生成XML文件,或者也可以使用pull解析器生成XML文件,这里推荐大家使用Pull解析器. 1.使用Pull解析器生成一个与itcast.xml文件内容相同的myitcast.xml文件,代码在下方 public static String writeXML(List<Person> persons, Writer wri