I recently had cause to remove all files with a particular name and containing a particular string from some production servers. Below is the Gist I used to do it. The first part of the script is some basic validations, but line 43 is where the main work is done. We first `find` all files named `example.html`, we then pass those to `grep` to check for the string, and, if the string is found, finally we pass the file paths to `rm` to verbosely (so we have a record of what was removed) remove them.
While checking this script, my colleague Sean introduced me to Shell Check, which in turn pointed to two ways I could tighten the original script:
Firstly, and most simply, I wasn’t quoting the `$PATH_TO_INSTALLS` on line 43 in the script; this could have caused issues if my file path contained spaces. This was fixed pretty easily.
Secondly, and along similar lines, I was not aware that `xargs` might interpret said spaces in unexpected and inglorious ways. To fix this, I’ve added `-print0` to the `find` command and `-0` to my `xargs` commands.