Have you ever found your self in a situation where you’ve needed to replace text in multiple files quickly and efficiently?
I came across this conundrum on a monthly basis when I needed to change the contents of tens/hundreds of LoadRunner scripts and parameters to point from the name of the preceding month to the name of the current month.
I did a bit of searching online and found this handy little command line utility called FART – Find and Replace Text. Put simply, it searches a file for X string and replaces it with Y.
It is really easy to use and literally takes a few minutes to set-up:
Usage: FART [options] [--] [,...] [find_string] [replace_string]
-h --help Show this help message (ignores other options)
-q --quiet Suppress output to stdio / stderr
-V --verbose Show more information
-r --recursive Process sub-folders recursively
-c --count Only show filenames, match counts and totals
-i --ignore-case Case insensitive text comparison
-v --invert Print lines NOT containing the find string
-n --line-number Print line number before each line (1-based)
-w --word Match whole word (uses C syntax, like grep)
-f --filename Find (and replace) filename instead of contents
-B --binary Also search (and replace) in binary files (CAUTION)
-C --c-style Allow C-style extended characters (\xFF\0\t\n\r\\ etc.)
--cvs Skip cvs dirs; execute "cvs edit" before changing files
-a --adapt Adapt the case of replace_string to found string
-b --backup Make a backup of each changed file
-p --preview Do not change the files but print the changes
fart "C:\APRIL2011\Scripts\someFile.txt" oldText newText
This line instructs FART to simply replace the string oldText with newText.
fart -i -r "C:\APRIL2011\Scripts\*.prm" march2011 APRIL2011
This line will instruct FART to recursively (-r) search for any file with the .prm extension in the \Scripts folder. The -i flag tells FART to ignore case-sensitivity when looking for the string.