问题描述
#! / 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.jarxyz-1.1.1.jarabc-1.6.jarabc-1.3.jarabc-xyz-pqr-1.9.6.jarabc-xyz-pqr-1.9.2.jarxyz-tom.jarxyz-tom-20120423.jarxyz-tom-20120410.jarabc-toolkit-1.6-runtime-5.2.0.jarabc-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.jar2) Script is removing xyz-tom-20120423.jar and xyz-tom-20120410.jar files.
Thanksadepu
#!/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
这篇关于删除重复的jar在一个directroy的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!