删除重复的jar在一个directroy [英] Remove duplicate jars in a directroy

查看:132
本文介绍了删除重复的jar在一个directroy的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

 #! / bin / bash 
#Script删除较低版本的jar文件。 $ l

在`ls * .jar | sed'中的PREFIX s / - [0-9\.\0-9\.a-zA-Z] * \.jar // g'| uniq -d`;在`ls -r $ {PREFIX} * | sed'1d''中为FILE做
;做
echo$ FILE
rm $ FILE
done
done

它有一个错误,我需要你的帮助来计算和修复错误。



我有一个目录中的Duplicate jar文件列表。 / p>

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文件。
BUG:1)脚本正在删除xyz-1.1.1.jar文件而不是xyz-1.1.jar
2)脚本正在删除xyz-tom-20120423.jar和xyz-tom-20120410.jar文件。



感谢
adepu

解决方案

 #!/ bin / bash 
如果[$#== 0];那么
dir ='。'
elif [$#== 1];那么
dir = $ 1
else
echo用法:$ 0 [dir];
exit 1;
fi

for`find $ dir -name'* .jar'`;在$ unzip -l $ lib |中为
egrep -o'[^] *。class $'`; do
class =`echo $ class | sed s / \\\\.class // | sed s / [ - 。\\ / $] / _ / g`
existing = $(evalecho \ $ CLS _ $ {class})
if [-n$ existing ];然后回显$ lib $ existing; fi
eval CLS _ $ {class} =\$ {lib} $ {existing} \
done
done |排序| uniq -c |排序-nr

我在这里找到这个代码


I have a script to remove lower version jars files in a directory.

#!/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

It has a bug and i need your help to figure and fix the bug.

I have below list of Duplicate jar files in a directory.

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

The bug is with xyz pattern jar files. BUG: 1) Script is removing xyz-1.1.1.jar file instead of xyz-1.1.jar 2) Script is removing xyz-tom-20120423.jar and xyz-tom-20120410.jar files.

Thanks adepu

解决方案

#!/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在一个directroy的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆