On Sunday 28 February 2010, Stroller wrote: > If I want to automagically replace text in a file, I can use `sed`. I don't > believe that `sed` can be invoked in such a way to change the file in > place, therefore two commands are necessary: > > $ sed 's/Project Gutenberg/Wordsworth Classics/' foo > bar > $ mv bar foo > $
Have a look at sed's "-i" option. > Using `grep` I can search *recursively* through directories to find the > text I'm looking for. EG: `grep -R Gutenberg ~` > > I would like to find every instance of $foo in a directory hierarchy and > replace it with $bar. > > Is there any tool that will combine all these operations for me? > > If not, what is the best way to string together grep and sed so that > they'll do what I want? A starting point could be (after you make a backup of the whole tree) find /basedir -type f -exec sed -i 's/foo/bar/g' {} +