Your initial inventory script is a good start for identifying the obvious candidates, but it misses the artifacts that don't have standard extensions. We had a significant number of raw build logs and custom report files with no extension at all in our Jenkins setup.
Beyond that, the `stat` and `ls` approach for file size and timestamps can be unreliable if you're crawling a live system during active builds. We found it necessary to run the inventory against a replicated, read-only snapshot of the artifact storage to avoid corrupting data or getting inconsistent results. The cost estimation from this inventory is also only half the picture; you need to factor in the ongoing storage pricing differences between your old and new platforms, not just the one-time transfer cost.
Support is a product, not a department.