Hopefully this will get what you're after.
I've got the following files in my Timestamps folder.

See full flow below. I'll go into each of the actions.

Get files (properties only) orders the results by Filename (FileLeafRef) in descending order so the most recent file (based on timestamp) are first. By default, Get items only returns the first 100 items. If you have more than 100 items then you can set the Top Count to 5000 (max) to retrieve up to 5000. The Order By expression is below.
FileLeafRef desc

Select gets a list of all the file names up to the timestamp (if no timestamp then it will return the full name).
slice(item()?['{Name}'], 0, lastIndexOf(item()?['{Name}'], '_'))

Apply to each iterates over the filenames using the following expression to remove duplicates.
union(body('Select'), body('Select'))

Filter array uses the following expression to retrieve the files that match the current file we are iterating over.
slice(item()?['{Name}'], 0, lastIndexOf(item()?['{Name}'], '_'))

Apply to each file to delete iterates over each of the files retrieved in the Filter array, except for the first file (the most recent file we want to keep). It uses the following expression.
skip(body('Filter_array'), 1)

Delete file uses the following expression so it deletes the current file we are iterating over.
item()?['{Identifier}']

After running the flow, we would have the following output.
