I defer to the master :)
Ben Stern <[EMAIL PROTECTED]> wrote:
> On Wed, Jan 10, 2007 at 06:46:28PM -0500, J. Milgram wrote:
> >> in each directory used by the CMS. Any idea how I might have done this
> >> recursively?
> > !#/bin/bash
> > for f in `find . -type f -name \*.php`; do mv -v $f ${f}5; done
>
> find . -type f -name \*.php -exec mv -i '{}' '{}'5 \;
>
> This takes advantage of the fact that you're renaming .php -> .php5 - that
> is, the exact same filename except with a 5 tacked on.
>
> >> I now have a whole bunch of references to non-existent .php files in
> >> this system. Any way I could do a recursive find/replace in the textual
> >> content of a given directory?
> >
> > !#/bin/bash
> > for f in `find . -type f`; do mv -v $f $f.bak; sed 's/php/php5/g' $f.bak >
> > $f; done
>
> Can't improve on this one beyond:
>
> for f in `find . -type f -exec grep -q php '{}' \; -print`; do
>
> Although I'd be concerned abound find going bonkers and finding all the
> .bak files that had just been made. Perhaps:
>
> #!/bin/bash
> find . -type f -exec grep -q php '{}' \; -print > /tmp/PHPLIST.eoin
> while read f < /tmp/PHPLIST.eoin; do
> mv -iv $f $f.bak
> sed 's/php/php5/g' $f.bak > $f
> done
> rm /tmp/PHPLIST.eoin
>
> Note that under Solaris, to get grep -q to work, you need to usr
> /usr/xpg4/bin/grep, not the normal grep. This also assumes that none of
> your files have spaces in the name. If they do, you can try to make the
> find command do it all with multiple -exec commands, but I am concerned
> about the .bak files making trouble.
>
> Ben
> --
> Ben Stern UNIX & Networks Monkey [EMAIL PROTECTED]
> This post does not represent FTI, even if I claim it does. Neener neener.
> UM Linux Users' Group Electromagnetic Networks Microbrew Software
>