Это можно сделать, но это немного брутто. Вы хотите что-то вроде этого:
final := $(foreach F,$(files),$(word $(words $(subst _, ,$F)),$(subst _, ,$F)))
Здесь говорится, что для каждого элемента в files
мы конвертируем _
в пробел, теперь мы можем использовать наши функции для каждого слова, чтобы манипулировать им: извлечь последнее слово в списке слов.
ETA
Ниже указано, что это можно упростить, используя lastword
:
final := $(foreach F,$(files),$(lastword $(subst _, ,$F)))