l i n u x - u s e r s - g r o u p - o f - d a v i s
L U G O D
 
Next Meeting:
January 6: Social gathering
Next Installfest:
TBD
Latest News:
Nov. 18: Club officer elections
Page last updated:
2003 Jun 06 11:22

The following is an archive of a post made to our 'vox-tech mailing list' by one of its subscribers.

Report this post as spam:

(Enter your email address)
Re: [vox-tech] Shell Scripting Question
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [vox-tech] Shell Scripting Question



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

The -path is like -name but searches the entire relative filename (i.e.,
including the names of containing directories); the -print0 causes the output
filnames to be null-separated, so that filenames that contain returns or
linefeeds will not break the script. The -0 tells xargs to expect a
null-separated list. See the relevant man pages for full details: find(1) and
xargs(1).

-- 
Henry House
The attached file is a digital signature. See <http://romana.hajhouse.org/pgp>
for information.  My OpenPGP key: <http://romana.hajhouse.org/hajhouse.asc>.

Attachment: pgp00005.pgp
Description: PGP signature



LinkedIn
LUGOD Group on LinkedIn
Sign up for LUGOD event announcements
Your email address:
facebook
LUGOD Group on Facebook
'Like' LUGOD on Facebook:

Hosting provided by:
Sunset Systems
Sunset Systems offers preconfigured Linux systems, remote system administration and custom software development.

LUGOD: Linux Users' Group of Davis
PO Box 2082, Davis, CA 95617
Contact Us

LUGOD is a 501(c)7 non-profit organization
based in Davis, California
and serving the Sacramento area.
"Linux" is a trademark of Linus Torvalds.

Sponsored in part by:
Sunset Systems
Who graciously hosts our website & mailing lists!