Strategies for cleaning up the Intermediate folders?

Our build machines tend to fill up their disk space; after investigation, about 70% of that is the various Intermediate directories. Looking more closely, it seems that some of the files in there are obsolete; for instance, when new source files are added to a project, a file that used to be named Module.Engine.1_of_34.cpp.obj may becomes Module.Engine.1_of_35.cpp.obj etc., but the bunch of _34 files are never cleaned up.

We tried several strategies. Removing the Intermediate directories is safe, but makes builds incredibly longer. Trying to merely remove files older than e.g. a month leads to various build errors because of broken dependencies. Are there any recommendations?