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

Reply via email to