--On Friday, June 06, 2003 10:34:36 -0700 Henry House <[EMAIL PROTECTED]> wrote:

On Fri, Jun 06, 2003 at 10:28:37AM -0700, Richard Crawford wrote:

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.

This seems like a ideal use for xargs. Try:


find . -path '*/messages/*' -type f -print0 | xargs -0 chmod 777

That's fine if the host has gnu find and xargs. If it doesn't, and you're confident none of the directory names contain white space, then here's a more portable method:


        find ... -name messages -type d -print | while read dir
        do
                chmod 777 $dir/*
        done

If these directories contain a huge number of files then the shell may balk at expanding that wildcard, in which case you could do:

        find ... -name messages -type d -print | while read dir
        do
                find $dir -type f -exec chmod 777 '{}' ';'
        done

If you're confident that none of the filenames will contain white space, the inner find could be replaced with

find $dir -type f -print | xargs chmod 777

--
Kenneth Herron  [EMAIL PROTECTED]     916-366-7338
_______________________________________________
vox-tech mailing list
[EMAIL PROTECTED]
http://lists.lugod.org/mailman/listinfo/vox-tech

Reply via email to