gpt4 book ai didi

jar - 删除目录中的重复 jar

转载 作者:行者123 更新时间:2023-12-05 05:27:42 27 4
gpt4 key购买 nike

我有一个脚本可以删除目录中的低版本 jars 文件。

#!/bin/bash
#Script to remove lower version jar files.

for PREFIX in `ls *.jar|sed 's/-[0-9\.\0-9\.a-zA-Z]*\.jar//g'|uniq -d`; do
for FILE in `ls -r ${PREFIX}*|sed '1d'`; do
echo " $FILE"
rm $FILE
done
done

它有一个错误。

我在目录中有以下重复 jar 文件列表。

xyz-1.1.jar
xyz-1.1.1.jar
abc-1.6.jar
abc-1.3.jar
abc-xyz-pqr-1.9.6.jar
abc-xyz-pqr-1.9.2.jar
xyz-tom.jar
xyz-tom-20120423.jar
xyz-tom-20120410.jar
abc-toolkit-1.6-runtime-5.2.0.jar
abc-toolkit-1.6-runtime-5.0.0.jar

错误与 xyz 模式 jar 文件有关。错误:

  • 脚本正在删除 xyz-1.1.1.jar 文件而不是 xyz-1.1.jar
  • 脚本正在删除 xyz-tom-20120423.jar 和 xyz-tom-20120410.jar 文件。

最佳答案

#!/bin/bash
if [ $# == 0 ]; then
dir='.'
elif [ $# == 1 ]; then
dir=$1
else
echo "Usage: $0 [dir]";
exit 1;
fi

for lib in `find $dir -name '*.jar'`; do
for class in `unzip -l $lib | egrep -o '[^ ]*.class$'`; do
class=`echo $class | sed s/\\\\.class// | sed s/[-.\\/$]/_/g`
existing=$( eval "echo \$CLS_${class}" )
if [ -n "$existing" ]; then echo "$lib $existing"; fi
eval CLS_${class}="\"${lib} ${existing}\""
done
done | sort | uniq -c | sort -nr

I find this code here

关于jar - 删除目录中的重复 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17555928/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com