#!/bin/bash declare -A min declare -A max for i in $* ; do #fn=$(echo $i | awk -F \; '{print $1;}') #vers=$(echo $i | awk -F \; '{print $2;}') fn=$(echo $i | cut -d \; -f 1) vers=$(echo $i | cut -d \; -f 2) if [ -z "${min[$fn]}" ] ; then min[$fn]=$vers elif [ "${min[$fn]}" -gt $vers ] ; then min[$fn]=$vers fi if [ -z "${max[$fn]}" ] ; then max[$fn]=$vers elif [ "${max[$fn]}" -lt $vers ] ; then max[$fn]=$vers fi done for i in "${!max[@]}" ; do ma=${max[$i]} mi=${min[$i]} if [ $ma -gt $mi ] ; then f=$mi while [ $f -lt $ma ] ; do rm ${i}\;$f f=$(expr $f + 1) done fi mv ${i}\;$ma $i done