替换项目中的包名

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

项目中所有的类似  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/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29254281/viewspace-2638869/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值