Recursive Find and Replace With grep and Perl
I thought it might be a nice idea to start posting useful little commands and bits of code every now and then–ones I’ve found to be particularly useful. So here’s the first one, recursive find and replace. A masterfully crafted regular expression paired with this command can save you hours of tedious work.
This will search all files recursively for SEARCH_STRING and replace all occurrences of SEARCH_STRING with REPLACE_STRING throughout each unique file found. It also creates a backup of each modified file so that FILE is backed-up as FILE~ (with a tilde).
grep -R --files-with-matches 'SEARCH_STRING' . | sort | uniq | xargs perl -pi~ -e 's/SEARCH_STRING/REPLACE_STRING/'
No related posts.
Comments
3 Responses to “Recursive Find and Replace With grep and Perl”
Leave a Reply



Thank you very very much
)
Cool, worked a treat
If you have ack (way faster than grep) you can:
ack -al test | xargs sed ’s/test/foo/g’
to test and add the -i to sed to write the files
ack -al test | xargs sed -i ’s/test/foo/g’
It doesn’t make a backup, but that’s what version control is for, right?