There are probably several methods, but one is to use find to produce a list of all files (not directories) and then execute chmod on each of them. For example
Code:
find /my/directory -type f -exec chmod 644 '{}' +
Change the red parts to fit your needs. If you wonder what that '{}' is..well, you may have guessed that it's where the filelist is being put when exec'ing the given command on each file.
You can also first try the command without chmod'ing to see that it affects the right files:
Code:
find /my/directory -type f
The above would find all regular files (not directories, for example) from within /my/directory.
If the command happens to throw you an error about the exec part, chances are it's because of the plus sign (+) that ends the exec part. In this case try replacing the plus (+) with an escaped semicolon (\;) so it becomes
Code:
find /my/directory -type f -exec chmod 644 '{}' \;
On some machines I remember that it worked with semicolon (which needs a backslash in front of it, to protect it from being interpreted by your shell), but on my current installation it's the plus sign (without a backslash).
Another way would probably be to list all regular files on the directory (using either find or any tool that can just list all files without directories) and then pipe the output to xargs with which the chmod was run.
Hope this helps..read
for more information. Enjoy!