[个人原创]Linux shell 之paste 和 awk 和basename合用解决beyond Compare的文件夹对比上线时线上线下不一样的文件问题 不指定

写给自己,So,

场景: 线上代码要升级,此次代码要上线时,但线上和线下的某几个文件不一样,不能直接覆盖,需要对比,升级文件通过svn导出(包含文件夹导出),而线上用sz(可sz不能帮助建立文件的目录,导出都在一个目录里),于是否想通过Beyond Compare做文件夹的比较。
问题: 如何把线上的导出的部分需要覆盖的文件在导出后再通过建立文件夹和线上结构一样?【要是sz能帮助在导出时就按文件夹存放好就好了,可好像没有看到有这个选项】
核心: 如何重建线上需要覆盖的文件,好让Beyond Compare比较两个文件夹。
步骤: 两个步骤
       (1)摘取线上的需要覆盖的文件名下载到线下一个文件夹中。
  把线下svn要覆盖的文件导出到目录后用find命令:find . -type f 找出所有的文件,该命令的结果已经包含了目录和文件。
  把这些文件名,前面加上sz及可导出到线下的一个文件夹中。


       (2)建立和线上一样的目录并拷贝对应文件到目录中
       建立和线上一样的目录结构:对线下svn导出的文件(注意是:export才包含文件夹,而save revision to这个的导出比较乱。参考:http://justwinit.cn/post/4847/)
       用find命令找出文件夹:
       find . -type d
       再在find结果的内容前面添加mkdir  ,后到线上导出的文件目录下运行这个mkdir 的命令:在线上代码的文件夹下生成目录。
  (3)构造cp a.php  abc/a.php 类似并运行。
  在线下svn包含目录的文件中,运行如相命令,生成文件a.txt:
  
  以上文件是一个文件名。下一步就是要一个 abc/a.php ,这个好办,直接:find . -type f 就能搞定,为b.txt,
  Linux提供了一个: paste  命令:
  
   结果如下:
   a.php  abc/a.php
  
   再vim或者awk在前面加一个正则替换实现:cp a.php  abc/a.php,即可,再到线上文件下载的目录下运行这个生成好的脚本,也就完成了把原来的文件放到对应的目录下。

最新日志 随机日志 综合排行
  • 如何禁止访问https网页时弹出“安全信息...
  • 怎样设置RTX软件开机启动
  • 怎么看自己win7系统是32位还是64位?
  • linux设置密码过期时间
  • 研发项目管理工作的难度在哪儿?
  • 周末研究了一下Rtx2011服务端想到的采...
  • linux下ipcs和ipcrm命令详解
  • 解决/usr/bin/ld: cannot...
  • MySql中delimiter的作用是什么...
  • 什么是Web反向代理?
  • Centos下安装数据双向同步软件unis...
  • 针对EditPlus 3.0汉化版&quo...
  • 25岁以后知道你就太晚了···
  • 马云春天的烦恼:互联网内战时代
  • discuz!x1.5在nginx下的静态...
  • PHP中htmlentities跟html...
  • Discuz!X1.5 登录机制
  • 一只鸭子的黄金法则
  • Linux下执行程序时发生错误:canno...
  • [有图为证]3D肉蒲团真放浪形骸
  • curl获取服务器响应的http头,方便获...

  • 最后编辑: root 编辑于2012-2-15 11:49
    评论列表
    2012-2-23 01:10 | hxngb5kf Email Homepage
    参考参考,我认为很好,大家说说
    2012-2-23 01:09 | hxngb1yf Email Homepage
    楼主说得好,支持一下
    2012-2-19 06:21 | wobuzhidaog Email Homepage
    请问大家有什么看法?我绝对喜欢这个帖子
    2012-2-15 22:59 | mz海钻石5 Email Homepage
    嗯嗯,不错不错,帮忙顶起。
    分页: 1/1 第一页 1 最后页
    发表评论

    昵称

    网址

    电邮

    打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]