So I\’m blowing away, and re-installing, my Steam Bottle on Codeweaver\’s Crossover games. I was hoping to get some in-game overlay support for the Community/Friends features of Steam. I really really want to hang on to Team Fortress/Left 4 Dead settings though.
find command we can solve this problem fairly easy.
So the basic requirements in this scenario boil down to finding all the config files under the
~/.cxgames tree. I have an
~/etc directory to keep a backup of important things such as settings and handy scripts. I will copy my tar file to the
~/etc directory so I can find it easily later. However, I don’t want every
*.cfg file under my Steam bottle, just the ones for those specific games (Team Fortress and Left 4 Dead). When I run the following command, I\’ll discover those games have a common top-level directory, ~/.cxgames/Steam/drive_c/Program Files/Steam/steamapps.
find ~/.cxgames -name "*.cfg"
When I run the following command, however, I’ll get an error due to spaces in the directory/filename structure. Note the backslash in “Program Files” is an escaped space for the shell to properly interpret this.
find .cxgames/Steam/drive_c/Program\ Files/Steam/steamapps/ | xargs tar -rf ~/etc/steam-settings.tar
The find command has a switch
-print0 to deal with this, and
xargs will process this find output format with the
-0 flag. The
-0 flags tell these system utilities to print or use null-terminated strings, making it easier for shell utilities to consume the spaces in the filenames. Therefore the following command will get the files I need:
find ~/.cxgames/Steam/drive_c/Program Files/Steam/steamapps/ -name "*.cfg" -print0 | xargs -0 tar -rf ~/etc/steam-settings.tar
Restoring is as simple as running the following command from within my home directory.
tar xvf ~/etc/steam-settings.tar
Perhaps some day we’ll have a Linux steam client, and a promotional TF2 item named the Unix Pipe.