Changing permissions only on files or only on directories
Posted by Florian N in Unix general, tags: chmod 755 644The following two commands will change the permissions only on the files in a directory even if there are also other directories, and the same for directories only:
This only chmod’s files to 644:
[root@box1 ~]# find -type f | xargs -i chmod 644 {}
This only chmod’s directories to 755:
[root@box1 ~]# find -name '*' -type d | xargs -i chmod 755 {}
Also, as an addition here the most common permissions on server are 644 for files and 755 for directories, you may want to make sure that the files/directories are not having 777 permissions as this is a big security risk. Most of the time some scripts will need 777 permissions and if this is the case would be a good idea to find a way around this or just find another script that does not need 777 permissions set.

Entries (RSS)
There are problems with the solutions above if any file’s or folder’s name contains special characters like quotes.
In that case, use this (thanks to the xargs man page):
find . -type f -print0 | xargs -0i chmod 644 {}
find . -type d -print0 | xargs -0i chmod 755 {}
Be careful, the 0′s are zeros.