How can I do a recursive chmod only on directories?
Solution 1:
Run find
on -type d
(directories) with the -exec
primary to perform the chmod
only on folders:
find /your/path/here -type d -exec chmod o+x {} \;
To be sure it only performs it on desired objects, you can run just find /your/path/here -type d
first; it will simply print out the directories it finds.
Solution 2:
See Command line examples - chmod in the Wikipedia.
# Remove the execute permission on all files in a directory
# tree, while allowing for directory browsing.
chmod -R a-x+X directory
As added by Daniel: this should work in your case:
chmod -R o+X directory
Solution 3:
find /home/mydir -type d | xargs chmod ugo+rx
This works on CentOS6, which the above find -exec does not. Basically it just pipes the list of directories to the xargs command which sends them to chmod. The chmod then sets universal read and execute (search) on the directories. To do this for all users in home use sudo:
sudo sh -c "find /home/ -type d | xargs chmod ugo+rx"