首页 > 代码库 > perl 脚本实现简单搜索修改文件并生成diff文件

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     }  
View Code

 

  

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