Linux使用脚本删除多个版本的jar包

问题描述:在进行测试的过程中发现,有一个导出xls文件的功能,文件正常到导出来了,但是页面上显示的是中文,但是导出来的xls文件取的确是数据库的存值,没有转换

前端一看代码说没问题,那没办法重启环境,清理浏览器缓存,还是不行,找其他的小伙伴导出一下也还是不行,排查很久没找到问题,最后到服务器上去看发现lib下的jar包存在多个版本

问题排查出来我也到服务器查看发现还真是,回想一下是针对比较老的环境进行升级的时候一次升级上去的,但是有一个清理jar脚本的文件没有没升级一次都执行一次,导致只执行到最后一次的删除脚本,找到问题了看一下有多少jar重复了

查找当前目录及其子目录中具有相同名称但版本不同的jar包:

find . -name "*.jar" | sed 's/.*\///' | sed 's/-[0-9].*//' | sort | uniq -d

这个命令的解释如下:

  1. find . -name "*.jar":在当前目录及其子目录中查找所有jar文件。
  2. sed 's/.*\///':使用sed命令删除文件路径,只保留文件名。
  3. sed 's/-[0-9].*//':使用sed命令删除文件名中的版本号(假设版本号以数字开头,后面跟着其他字符)。
  4. sort:对结果进行排序。
  5. uniq -d:只显示重复的行,即具有相同名称但版本不同的jar包。

这个命令将输出具有相同名称但版本不同的jar包的基本名称。如果你想查看完整的文件路径和名称,可以使用以下命令:

find . -name "*.jar" | sed 's/-[0-9].*//' | sort | uniq -d

以下脚本来删除具有相同名称但不同版本的jar包

#!/bin/bash

# 查找当前目录及其子目录中的所有jar文件
find . -name "*.jar" | sed 's/.*\///' | sed 's/-[0-9].*//' | sort | uniq -d > duplicate_jars.txt

# 逐行读取duplicate_jars.txt文件
while read -r line; do
  # 查找具有相同名称但不同版本的jar包
  find . -name "${line}*.jar" -not -name "${line}-${version}.jar" -exec rm -f {} \;
done< duplicate_jars.txt

# 删除duplicate_jars.txt文件
rm duplicate_jars.txt

将此脚本保存为delete_duplicate_jars.sh,并确保它具有可执行权限(使用chmod +x delete_duplicate_jars.sh)。

使用方法

  1. 将脚本保存到包含jar文件的目录中。
  2. 打开终端并导航到脚本所在的目录。
  3. 运行脚本:./delete_duplicate_jars.sh

脚本将查找并删除具有相同名称但不同版本的jar包。请注意,在运行此脚本之前,确保已备份项目,以防意外删除重要文件(最好是找到重复的文件一个个删除)

删除jar包重启环境再进行测试,xls下载的文件就显示和页面一致了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值