Re: [CentOS] replace multiple string

2011-09-23 Thread m . roth
madu...@gmail.com wrote:

 I would like to use a bash script that searches files and
 subdirectories name in a directory /var/ww/html/web
 for a specific string, and when it finds the search string, replaces
 the string (old1) with new string (new1), and so on
 old2 with new2 oldn with newn.

 replace_string.sh
 #!/bin/bash
 for db in $(find /var/www/html/web -name * -exec)
 do
   sed -e s/old1/new1/ \
   sed  -e s/old2/new2/ \
 ...
   sed -e s/oldn/newn/ $db
 done

Close. I think
find /var/www/html/web -type f -exec sed -i -e
s/old1/new1/;s/old2/new2/;... {} \;
would do it. The -i is to make the change inplace, editing the existing file.

 mark

___
CentOS mailing list
CentOS@centos.org
http://lists.centos.org/mailman/listinfo/centos


Re: [CentOS] replace multiple string

2011-09-23 Thread madu...@gmail.com
-type f ??
the string could be a name of file name or subdirectory name

Thanks
pons

On Fri, Sep 23, 2011 at 8:51 PM,  m.r...@5-cent.us wrote:
 madu...@gmail.com wrote:

 I would like to use a bash script that searches files and
 subdirectories name in a directory /var/ww/html/web
 for a specific string, and when it finds the search string, replaces
 the string (old1) with new string (new1), and so on
 old2 with new2 oldn with newn.

 replace_string.sh
 #!/bin/bash
 for db in $(find /var/www/html/web -name * -exec)
 do
   sed -e s/old1/new1/ \
   sed  -e s/old2/new2/ \
 ...
   sed -e s/oldn/newn/ $db
 done

 Close. I think
 find /var/www/html/web -type f -exec sed -i -e
 s/old1/new1/;s/old2/new2/;... {} \;
 would do it. The -i is to make the change inplace, editing the existing file.

         mark

 ___
 CentOS mailing list
 CentOS@centos.org
 http://lists.centos.org/mailman/listinfo/centos

___
CentOS mailing list
CentOS@centos.org
http://lists.centos.org/mailman/listinfo/centos


Re: [CentOS] replace multiple string

2011-09-23 Thread m . roth
madu...@gmail.com wrote:
-type f ??
 the string could be a name of file name or subdirectory name

No, it can't. You are *not* going to edit directory names this way, and
should not.

  mark

 Thanks
 pons

 On Fri, Sep 23, 2011 at 8:51 PM,  m.r...@5-cent.us wrote:
 madu...@gmail.com wrote:

 I would like to use a bash script that searches files and
 subdirectories name in a directory /var/ww/html/web
 for a specific string, and when it finds the search string, replaces
 the string (old1) with new string (new1), and so on
 old2 with new2 oldn with newn.

 replace_string.sh
 #!/bin/bash
 for db in $(find /var/www/html/web -name * -exec)
 do
   sed -e s/old1/new1/ \
   sed  -e s/old2/new2/ \
 ...
   sed -e s/oldn/newn/ $db
 done

 Close. I think
 find /var/www/html/web -type f -exec sed -i -e
 s/old1/new1/;s/old2/new2/;... {} \;
 would do it. The -i is to make the change inplace, editing the existing
 file.

         mark

 ___
 CentOS mailing list
 CentOS@centos.org
 http://lists.centos.org/mailman/listinfo/centos

 ___
 CentOS mailing list
 CentOS@centos.org
 http://lists.centos.org/mailman/listinfo/centos



___
CentOS mailing list
CentOS@centos.org
http://lists.centos.org/mailman/listinfo/centos


Re: [CentOS] replace multiple string

2011-09-23 Thread m . roth
madu...@gmail.com wrote:
-type f ??
 the string could be a name of file name or subdirectory name

I hate webmail. After I hit send and while it was thinking about going,
I realized another question: are you trying to rename files?

 mark
 Thanks
 pons

 On Fri, Sep 23, 2011 at 8:51 PM,  m.r...@5-cent.us wrote:
 madu...@gmail.com wrote:

 I would like to use a bash script that searches files and
 subdirectories name in a directory /var/ww/html/web
 for a specific string, and when it finds the search string, replaces
 the string (old1) with new string (new1), and so on
 old2 with new2 oldn with newn.

 replace_string.sh
 #!/bin/bash
 for db in $(find /var/www/html/web -name * -exec)
 do
   sed -e s/old1/new1/ \
   sed  -e s/old2/new2/ \
 ...
   sed -e s/oldn/newn/ $db
 done

 Close. I think
 find /var/www/html/web -type f -exec sed -i -e
 s/old1/new1/;s/old2/new2/;... {} \;
 would do it. The -i is to make the change inplace, editing the existing
 file.

         mark

 ___
 CentOS mailing list
 CentOS@centos.org
 http://lists.centos.org/mailman/listinfo/centos

 ___
 CentOS mailing list
 CentOS@centos.org
 http://lists.centos.org/mailman/listinfo/centos



___
CentOS mailing list
CentOS@centos.org
http://lists.centos.org/mailman/listinfo/centos


Re: [CentOS] replace multiple string

2011-09-23 Thread madu...@gmail.com
yes files and directories too ..

pons

On Fri, Sep 23, 2011 at 9:08 PM,  m.r...@5-cent.us wrote:
 madu...@gmail.com wrote:
-type f ??
 the string could be a name of file name or subdirectory name

 I hate webmail. After I hit send and while it was thinking about going,
 I realized another question: are you trying to rename files?

             mark
 Thanks
 pons

 On Fri, Sep 23, 2011 at 8:51 PM,  m.r...@5-cent.us wrote:
 madu...@gmail.com wrote:

 I would like to use a bash script that searches files and
 subdirectories name in a directory /var/ww/html/web
 for a specific string, and when it finds the search string, replaces
 the string (old1) with new string (new1), and so on
 old2 with new2 oldn with newn.

 replace_string.sh
 #!/bin/bash
 for db in $(find /var/www/html/web -name * -exec)
 do
   sed -e s/old1/new1/ \
   sed  -e s/old2/new2/ \
 ...
   sed -e s/oldn/newn/ $db
 done

 Close. I think
 find /var/www/html/web -type f -exec sed -i -e
 s/old1/new1/;s/old2/new2/;... {} \;
 would do it. The -i is to make the change inplace, editing the existing
 file.

         mark

 ___
 CentOS mailing list
 CentOS@centos.org
 http://lists.centos.org/mailman/listinfo/centos

 ___
 CentOS mailing list
 CentOS@centos.org
 http://lists.centos.org/mailman/listinfo/centos



 ___
 CentOS mailing list
 CentOS@centos.org
 http://lists.centos.org/mailman/listinfo/centos

___
CentOS mailing list
CentOS@centos.org
http://lists.centos.org/mailman/listinfo/centos


Re: [CentOS] replace multiple string

2011-09-23 Thread m . roth
madu...@gmail.com wrote:
 pons

 On Fri, Sep 23, 2011 at 9:08 PM,  m.r...@5-cent.us wrote:
 madu...@gmail.com wrote:
-type f ??
 the string could be a name of file name or subdirectory name
snip
 I realized another question: are you trying to rename files?

 yes files and directories too ..

Then different commands - sed for the files, mv for the directories.

This begins to look like a perl script.

   mark

 On Fri, Sep 23, 2011 at 8:51 PM,  m.r...@5-cent.us wrote:
 madu...@gmail.com wrote:

 I would like to use a bash script that searches files and
 subdirectories name in a directory /var/ww/html/web
 for a specific string, and when it finds the search string, replaces
 the string (old1) with new string (new1), and so on
 old2 with new2 oldn with newn.

 replace_string.sh
 #!/bin/bash
 for db in $(find /var/www/html/web -name * -exec)
 do
   sed -e s/old1/new1/ \
   sed  -e s/old2/new2/ \
 ...
   sed -e s/oldn/newn/ $db
 done

 Close. I think
 find /var/www/html/web -type f -exec sed -i -e
 s/old1/new1/;s/old2/new2/;... {} \;
 would do it. The -i is to make the change inplace, editing the
 existing
 file.

         mark

 ___
 CentOS mailing list
 CentOS@centos.org
 http://lists.centos.org/mailman/listinfo/centos

 ___
 CentOS mailing list
 CentOS@centos.org
 http://lists.centos.org/mailman/listinfo/centos



 ___
 CentOS mailing list
 CentOS@centos.org
 http://lists.centos.org/mailman/listinfo/centos

 ___
 CentOS mailing list
 CentOS@centos.org
 http://lists.centos.org/mailman/listinfo/centos



___
CentOS mailing list
CentOS@centos.org
http://lists.centos.org/mailman/listinfo/centos


Re: [CentOS] replace multiple string

2011-09-23 Thread Les Mikesell
On Fri, Sep 23, 2011 at 1:21 PM,  m.r...@5-cent.us wrote:

 I realized another question: are you trying to rename files?

 yes files and directories too ..

 Then different commands - sed for the files, mv for the directories.

 This begins to look like a perl script.


Either way, it's probably a bad idea to have a script that renames
directories in mid-path while you are recursing the tree without
giving it some thought.

-- 
  Les Mikesell
   lesmikes...@gmail.com
___
CentOS mailing list
CentOS@centos.org
http://lists.centos.org/mailman/listinfo/centos


Re: [CentOS] replace multiple string

2011-09-23 Thread m . roth
Les Mikesell wrote:
 On Fri, Sep 23, 2011 at 1:21 PM,  m.r...@5-cent.us wrote:

 I realized another question: are you trying to rename files?

 yes files and directories too ..

 Then different commands - sed for the files, mv for the directories.

 This begins to look like a perl script.

 Either way, it's probably a bad idea to have a script that renames
 directories in mid-path while you are recursing the tree without
 giving it some thought.

Urk! Good catch, Les, I hadn't even *thought* of that.

 mark

___
CentOS mailing list
CentOS@centos.org
http://lists.centos.org/mailman/listinfo/centos


Re: [CentOS] replace multiple string

2011-09-23 Thread madu...@gmail.com
I am planning to have this in 2 stages first -type fthen  -type d

pons

On Fri, Sep 23, 2011 at 11:15 PM,  m.r...@5-cent.us wrote:
 Les Mikesell wrote:
 On Fri, Sep 23, 2011 at 1:21 PM,  m.r...@5-cent.us wrote:

 I realized another question: are you trying to rename files?

 yes files and directories too ..

 Then different commands - sed for the files, mv for the directories.

 This begins to look like a perl script.

 Either way, it's probably a bad idea to have a script that renames
 directories in mid-path while you are recursing the tree without
 giving it some thought.

 Urk! Good catch, Les, I hadn't even *thought* of that.

     mark

 ___
 CentOS mailing list
 CentOS@centos.org
 http://lists.centos.org/mailman/listinfo/centos

___
CentOS mailing list
CentOS@centos.org
http://lists.centos.org/mailman/listinfo/centos


Re: [CentOS] replace multiple string

2011-09-23 Thread John R Pierce
On 09/23/11 1:51 PM, madu...@gmail.com wrote:
 I am planning to have this in 2 stages first -type fthen  -type d

you likely should use the -depth option that says descend first, even if 
you do the files seperately   if you use -depth, you don't have to 
do it in two phases.




-- 
john r pierceN 37, W 122
santa cruz ca mid-left coast

___
CentOS mailing list
CentOS@centos.org
http://lists.centos.org/mailman/listinfo/centos


Re: [CentOS] replace multiple string

2011-09-23 Thread Thomas Johansson
On 2011-09-23 19:47, madu...@gmail.com wrote:
 Hi


 I would like to use a bash script that searches files and
 subdirectories name in a directory /var/ww/html/web
 for a specific string, and when it finds the search string, replaces
 the string (old1) with new string (new1), and so on
 old2 with new2 oldn with newn.



 replace_string.sh
 #!/bin/bash
 for db in $(find /var/www/html/web -name * -exec)
 do
sed -e s/old1/new1/ \
sed -e s/old2/new2/ \
 ...
sed -e s/oldn/newn/ $db

A more efficient way to perform sed is

sed -e s/old1/new1/ \
 -e s/old2/new2/ \
...
 -e s/oldn/newn/ $db

or

sed -e s/old1/new1/ ; s/old2/new2/ .. $db


Other hints for efficient nash shell scripts..
http://hacktux.com/bash/script/efficient
___
CentOS mailing list
CentOS@centos.org
http://lists.centos.org/mailman/listinfo/centos


Re: [CentOS] replace multiple string

2011-09-23 Thread Bart Schaefer
On Fri, Sep 23, 2011 at 10:47 AM, madu...@gmail.com madu...@gmail.com wrote:

 I would like to use a bash script that searches files and
 subdirectories name in a directory /var/ww/html/web
 for a specific string, and when it finds the search string, replaces
 the string (old1) with new string (new1), and so on
 old2 with new2 oldn with newn.

It would appear from the subsequent discussion that what you're trying
to do is rename files and subdirectories, NOT change the CONTENTS of
the files.  All these suggestions with sed so far are for changing
strings in the file contents, and won't work on the names of anything.

I think you want to start by simply collecting all the file and
subdirectory names:

find /var/www/html/web -depth -print

(this assumes that none of the file names contains embedded newlines).

Next you want to transform those names using your set of patterns, and
then rename the results:

find /var/www/html/web -depth -print | \
while read oldname
do
 newname=$(echo $oldname | sed -e s/old1/new1/ \
-e s/old2/new2/ \
-e ... \
-e s/oldN/newN/)
 mv $oldname $newname
done

If the names contain leading/trailing spaces or other odd characters
then a simple pipe to while read probably won't work and you will
have to resort to a perl script or the like.

Note also you can pass multiple -e options to sed.
___
CentOS mailing list
CentOS@centos.org
http://lists.centos.org/mailman/listinfo/centos


Re: [CentOS] replace multiple string

2011-09-23 Thread John R Pierce
how about...

 find . -depth -execdir mv \{} ${\{}/old/new} \;


I do highly recommend test-running this with a echo  in front of the 
mv command.   I didn't test it.


-- 
john r pierceN 37, W 122
santa cruz ca mid-left coast

___
CentOS mailing list
CentOS@centos.org
http://lists.centos.org/mailman/listinfo/centos