Und das ist letztlich meine Frage: Gibt es für sowas einen schlauen Algorithmus?
Du kannst das Problem als Graph darstellen: Die Knoten sind die Dateinamen (alte sowie neue), jede Umbenennung ist eine gerichtete Kante. Im Endeffekt läuft es dann darauf hinaus, Kreise in dem Graphen zu finden (einen schlauen Algorithmus dafür findest du auf Wikipedia
). Pro Kreis musst du einen temporären Dateinamen einfügen. Das ist die minimale Anzahl.