Tente isso com o GNU sort and bash:
cd /path/to/dir/with/your/files
GLOBIGNORE="$(printf "%s\n" file_* | sort -t _ -k2,3r | sort -t _ -k2,2 -u | tr '\n' :)"
mv file_* /path/to/dir/to/save/old/versions
unset GLOBIGNORE
Eu tenho um monte de arquivos com nomes como este
file_1_v4_sdk.x
file_2_v1_3kl.x
file_3_v1_39f.x
file_3_v2_df0.x
file_4_v4_f33.x
file_4_v1_fks.x
file_4_v5_skd.x
file_5_v2_9ks.x
file_6_v4_911.x
file_7_v2_3jd.x
file_8_v1_9pc.x
file_8_v4_gpq.x
Existem várias versões de alguns dos arquivos, mas essas versões não têm um pedido. Eu quero encontrar os arquivos que têm várias versões e deixar apenas uma versão no diretório e mova as outras versões para outro diretório. Eu não tenho a menor idéia de como fazer isso. Eu só sei como iterar nas listas, mas neste caso não há ordem.
Espero que você possa me ajudar.