Based on your clarifications, you're not looking for a sublist at all. (That's a consecutive portion of a list, as returned by e.g. java.util.List.subList().)
Instead, what you want is to filter the list. And the usual way to do this is with filter(), which is very simple and clear:
val result = hugeList.filter{ it.name in filenameList }
That will do a linear scan through your huge list; for each file, it will scan through your list of filenames until it finds a match (or runs out of filenames). Then it appends each match to the resulting list.
In most cases, that would be perfectly good. But in this case, where performance is clearly an issue, that has two issues:
First, the need to scan through your list of filenames each time. If there are very few filenames, that's probably fine. Otherwise, it might be more efficient to first convert it to a set (which can be checked in constant time):
val filenameSet = filenameList.toSet()
val result = hugeList.filter{ it.name in filenameSet }
And second, it'll initially allocate only a small amount of space for the resulting list; as it grows and grows, it may need to keep reallocating a larger space and copying the elements over. (For example, ArrayList grows by 50% each time.) So if you have a rough idea of how large it might grow, you might want to pre-allocate a list of a suitable capacity, and then filterTo() it, to reduce the reallocation and copying. For example, if you expect roughly half the files to match:
val filenameSet = filenameList.toSet()
val result: MutableList<File> = ArrayList(hugeList.size / 2)
hugeList.filterTo(result){ it.name in filenameSet }
(I think that's about as efficient as you're likely to get, without either trying to parallelise it (see this question, though that could be a lot harder and might not give much improvement here), or using any opportunities the bigger picture gives you to change the problem.)