Linux bulk search and replace
• Systems (Administration) • bash, bulk search, computing, find, grep, search and replace
Doing a bulk search and replace across a set of files is actually surprisingly easy. sed is the key. It has a flag - i that will modify the files passed to it in-place.
$ sed -e 's/TextToFind/Replacement/' -i file1 file2 file3
Tie this power with either grep -l . [Thanks to Steve for pointing out a mistake in the following, now corrected]
$ grep -l TextToFind * |xargs sed -e 's/TextToFind/Replacement/' -i
or find
$ find . -exec sed -e 's/TextToFind/Replacement' -i {} ;
If there are multiple changes you want to make, just put them all into a file and pass it in via the -f flag.
file: replacements.patterns
s/TextToFind1/Replacement1/
s/TextToFind2/Replacement2/
s/TextToFind3/Replacement3/
and the command, using find to iterate through all files in the current directory and subdirectories.
find . -exec sed -f replacements.patterns -i {} ;
et voila - hope it helps.