On Thu, 21 Mar 2002, Nick Wilson wrote:
> Hi everyone,
> could someone please help me solve the following problem?
>
> I need to recursively find and replace a string in a whole bunch of dirs
> (a website). For example:
>
> change: http://my-testing-environment.com
> to: http://www.the-real-website.com
>
> I gues sed is the tool for this right? I've read the man page but I'm
> somewhat intimidated by it :-)
Well, you can use sed, but using perl gives one big advantage; it lets you
edit files in-place. Actually, it's making a copy first and then
overwriting the original, but you don't have to deal with that anyway.
Here is the command you need:
perl -p -i -e 's/testing-environment/the-real-website/g' `find . -type f`
Here's the breakdown:
-p means work like a filter: input text, run whatever program I specify on
each line of text, then print out each line. It is the equivalent of
wrapping your program with "while(<>) {" and "}".
-i means edit files in-place. You can specify an enxtention to leave a
backup of the original with if you want
-e means the next parameter is the program
The program is the equivalent to:
while(<>)
{
$_ =~ s/testing-environment/the-real-website/g;
print $_;
}
In -p -i mode, the program should be followed with a list of files to
process. Here I have the find command list all regular files under the
current directory in a subshell.
Does this do what you want?
----------------------------------------------------------------------------
DDDD David Kramer [EMAIL PROTECTED] http://thekramers.net
DK KD
DKK D I tried so hard and got so far But in the end it doesn't even matter
DK KD I had to fall to lose it all But in the end it doesn't even matter
DDDD -Linkin Park
_______________________________________________
Redhat-list mailing list
[EMAIL PROTECTED]
https://listman.redhat.com/mailman/listinfo/redhat-list