С zsh
:
myfiles=(*-*(.))
print -rl -- ${(u)myfiles[@]%%-*}
Это сохраняет все обычные имена файлов, которые содержат хотя бы один дефис в массиве. Затем он использует расширение параметра для каждого элемента массива, чтобы удалить первый тире и все, что следует за ним. Любые повторяющиеся элементы удаляются с помощью флага (u)
.
Чтобы также выбрать скрытые файлы, используйте myfiles=(*-*(.D))