I've written a python tool to compare the files that should exist for any game using the .acf format with what is actually on disk listing any discrepancies it finds and optionally fixing them.
- Note games that do not currently have any active manifest files
- List files that are supposed to exist but don't
- Show discrepancies in the capitalisation of files compared to what they are listed as in the manifest files, and optionally rename the files to match (with --rename).
- List any files in the game directories that are not managed by Steam (with --extraneous), and optionally remove them (with --delete - use with caution!)
This is NOT a substitute for using Steam's verify integrity of game cache. For one, it doesn't know how to verify the file checksums (anyone know what algorithm they use?), and secondly it can't go and fetch any missing manifest files (It tells you what to do in that case).
I wrote this script because I copied a bunch of games from my Windows install of Steam over to Linux and was concerned that the capitalisation on some of the files would not match what the game was expecting since Windows is not case sensitive but Linux is. Running verify integrity of game cache from Steam may not be sufficient as it ignores filename case (EDIT: Bug reported https://github.com/ValveSoftware/steam-for-linux/issues/577),
but that is no guarantee that the games all do the same.
This also allows me to easily delete all the extra Windows files that the Linux version does not use (*.exe, *.dll, etc), and purge any extra files that games may have created in their directories (e.g. log files).
You can find it amongst my junk code (It's steam/check_acf.py):
git checkout git://github.com/DarkStarSword/junk.git
Alternatively you can download the individual files from here if you don't want to use git (note: ui is a symlink, be sure to grab the contents from the second URL):https://github.com/DarkStarSword/junk/tree/master/steamhttps://github.com/DarkStarSword/junk/tree/master/python/ui
If you run it with no arguments it will process ~/.steam/root/SteamApps/appmanifest_*.acf. Otherwise you can pass it specific acf files to analyse.