[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