1

I would like to chmod all folders and subfolders within a specific folder, except I wish to exclude one folder (and all subfolders it contains).

What I have so far is a hack of the following solutions from StackOverflow:

Here is what I came up with so far:

find . -type d \( -path ./node_modules \) -prune -o -print -exec chmod 644 {}\;

The problem is with or without -print I receive the following error :

find: missing argument to `-exec'

The following line has the expected results I need -exec chmod 644{}\; to read from:

find . -type d \( -path ./node_modules \) -prune -o -print

What am I missing on that line to pipe the data to -exec ?

3

Remove -print, escape ( and ) and add space after {}

find . -type d \( -path ./node_modules \) -prune -o -exec chmod 644 {} \;
| improve this answer | |
  • Your solution worked. Thank you. I was in the middle of writing my solution when you posted this. Accepting as solution and upvoted. – Kraang Prime Jan 8 '17 at 7:09
4

After some playing around, I found that the following worked for me :

chmod all files recursively excluding folder

find . -not -path "*/node_modules*" -type f -exec chmod 644 {} \;

chmod all folders recursively excluding folder

find . -not -path "*/node_modules*" -type d -exec chmod 755 {} \;
| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.