Directory String Replace Posted on April 19, 2013 by Dave Fowler
Yesterday I discovered that many of the old posts on the Chartio Blog used odd unicode versions of quotes that were being rendered terribly. So I needed to do a find-replace for an entire directory.
The tool for doing so is the sed command line utility, and not using it has a history of getting you ridiculed. After over an hour of reading man pages and online examples I discovered that I really hate sed. I asked around about other's experiences and it everyone that I talked to who had tried it has their own horror stories to go along with it.
Its probably a great tool, and I'm probably just too dumb to make it work for me and my odd unicode quote replacement job, but I ended up just writing/modifying a simple python script to do string replacing on a directory level. Its not a command line tool, or replacement for SED. Just a script that I found useful and am sharing for others that may as well.
It takes 4 parameters:
- directory - the root directory to do the string replace in
- find - the string that you would like to find
- rep - the string that you would like to replace the found string with
- filePattern - a pattern to match the files you would like searched (eg. '*.html' or '*.py')
The following example will replace all instances of the word *"old"* with *"new"* in files ending in *".html"* located in the ~/some/directory/ directory
findReplace('~/some/directory/', "old", "new", '*.html')