[vox-tech] Shell Scripting Question

Micah J. Cowan vox-tech@lists.lugod.org
Fri, 6 Jun 2003 10:43:08 -0700


On Fri, Jun 06, 2003 at 10:34:36AM -0700, Henry House wrote:
> On Fri, Jun 06, 2003 at 10:28:37AM -0700, Richard Crawford wrote:
> > I have a script to chmod all of the files of a given name to 777, no
> > matter where they lie in the directory tree:
> > 
> > 
> > ################################################
> > 
> > find . -name $1 -print | while read i do
> >   chmod 777 $i
> >   echo "Modified: $i"
> > done
> > 
> > ################################################
> > 
> > Now what I need it to do is to go into only those directories called
> > "messages" and do the same thing to files in those directories.  I tried
> > passing "messages/*" to $1 but, of course, that didn't work.  I've also
> > tried adding a conditional, "if (grep "\/messages\/" $i)", to the script,
> > but that, of course, didn't work either.
> 
> This seems like a ideal use for xargs. Try:
> 
> 	find . -path '*/messages/*' -type f -print0 | xargs -0 chmod 777

I think:

  find . -path "*/messages/$1" -type f -print0 | xargs -0 chmod 777

May be closer to what he wants?

-Micah