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' {} +