Ever come across the problem of needing to chmod a directory and its many, many, sub-directories, but you don’t want to touch any of the files? Maybe it’s the exact opposite, or you need to recursively change the permissions on only files with a specific extension. Well I had a similar problem with my web server settings.
find . -type d -exec chmod 755 {} \;
- This will “
find
” all directories, starting at “.
“, and chmod them to755
.
find . -type f -exec chmod 644 {} \;
- This snippet does the opposite and finds only files. The difference (beside the file permissions) is the “
-type f
“, “f
” specifies files and “d
” directories.
If you check the comments, you’ll find a few additional snippets:
find . -type f -name '*.htm*' -exec chmod 644 {} \;
- This lets you “
find
” files (“-type f
“) with a specific extension (“-name '*.htm*'
“) and chmod them with your desired permission (“-exec chmod 644 {}
“).
chmod -R o+rX
- This snippet will recursively chmod “other” (“
o
“) permissions with read/eXecutable (“+rX
“), and the capital X ensures that directories and files set (user/group permissions) to executable will be properly modified, while ignoring regular (non-executable) files.