Это можно сделать несколькими способами, в зависимости от точного форматирования имен и того, что вы планируете с этим делать. Наиболее простым, вероятно, будет ls | sed
:
$ ls | sed 's/^\(.*_\)*\([^_]*\)_img\.[0-9]/\2/'
kvm131
kvm131
vm205
vm114
vm114
vm117
Если ваши имена файлов нормальны, и вы просто хотите визуально выглядеть, это будет хорошо, но если вы делаете больше с именами, есть вероятность ошибок в нечетных именах файлов. Вы можете получить их индивидуально так:
$ for file in *; do left=${file%_img.?}; base=${left##*_}; echo $base; done
kvm131
kvm131
vm205
vm114
vm114
vm117
Замените echo
с вашей командой выбора. Оба из них могут быть изменены, чтобы соответствовать формату более близко, если у вас есть другой формат в целом.