ITPub博客

首页 > 自动化运维 > 应用服务器 > 替换项目中的包名

替换项目中的包名

原创 应用服务器 作者:壹頁書 时间:2019-03-20 15:59:39 0 删除 编辑

项目已经做完了,但是包名前缀不符合公司规范.

项目中所有的类似  package com.sqi.opb.admin  的包名,引用

都要从 com.sqi 替换为 com.bj


这个首先需要替换所有的java文件,pom文件和yml配置文件里面的内容

然后批量移动文件夹 


实现 很简单 linux 两行命令


sed -i "s/com.sqi/com.bj/g" `grep com.sqi -rl /cygdrive/d/opb/ | grep  ".java\|.pom\|.yml\|.kt"`
find /cygdrive/d/opb/  -path "*src/*/sqi" -type d  -exec bash -c 'p=$(echo "{}"); target=$(echo "{}" | sed "s/sqi/bj/g");mv $p $target;' \;



我在windows上安装的cygwin工具 项目目录是/cygdrive/d/opb


首先看第一行命令的 grep部分

grep com.sqi -rl /cygdrive/d/opb/ | grep  ".java\|.pom\|.yml"

他的结果如下


他遍历   /cygdrive/d/opb/  下所有的子目录下的所有文件, 如果包含  “ com.sqi ”的内容 并且文件后缀名是 .java .pom .yml .kt则显示文件名


sed -i "s/com.sqi/com.bj/g" 然后通过 sed -i 在原文件直接进行替换, 将 com.sqi替换为 com.bj



第二步 批量移动目录

find /cygdrive/d/opb/  -path "*src/*/sqi" -type d

/cygdrive/d/opb/  目录下 ,所有 路径包含  "*src/*/sqi" 的目录找出来

结果如下


以目录 /cygdrive/d/opb/api-mock/src/main/java/com/sqi 为例


只需要将其 移动到  /cygdrive/d/opb/api-mock/src/main/java/com/bj 目录即可


所以 exec子句 实现了这个功能

-exec bash -c 'p=$(echo "{}"); target=$(echo "{}" | sed "s/sqi/bj/g");mv $p $target;' \;


{} 指代的是 前面 find 找到的路径 将这个路径的 sqi替换为bj 之后,mv即可


注意  exec 子句结束的时候   空格\;  的 空格不可缺少


参考:

https://askubuntu.com/questions/651315/how-do-you-output-the-filename-in-find-command-while-using-exec


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29254281/viewspace-2638869/,如需转载,请注明出处,否则将追究法律责任。

下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2013-10-19

  • 博文量
    621
  • 访问量
    5948215