Tente isto:
DIRPATH="/where/youre/files/are"
BASE=''
NUM=0
while read F; do
test -e "$F" || continue
FB=$(echo "$F" | sed 's/_part[0-9]*\.rar$//')
FN=$(echo "$F" | sed 's/.rar$// ; s/.*\([0-9][0-9]*\)$//')
if test "$BASE" == "$FB" ; then
test $FN -gt $NUM && NUM=$FN
else
test -n "$BASE" && echo "${BASE}_part$NUM.rar"
BASE=$FB
NUM=$FN
fi
done < <(ls -1 "$DIRPATH")
Explicação:
- Extraímos o nome e o número base de cada nome de arquivo
- Mantemos apenas o maior número
- Quando um novo nome base é encontrado, imprimimos o antigo nome base e o maior número antigo