35
8
How do I recursively execute chmod
or chown
for hidden files?
sudo chmod -R 775 *
does not work on hidden files.
The same thing goes for sudo chown -R user:group
.
35
8
How do I recursively execute chmod
or chown
for hidden files?
sudo chmod -R 775 *
does not work on hidden files.
The same thing goes for sudo chown -R user:group
.
37
If you're okay also chmod'ing the current directory, do that and let -R
do the heavy lifting. -R
does not ignore hidden files.
sudo chmod -R 775 .
35
*
doesn't include hidden files by default, but if you're in bash, you can do this with:
shopt -s dotglob
Read more about it in bash's builtin
manual:
If set, Bash includes filenames beginning with a `.' in the results of filename expansion.
This will make *
include hidden files too.
chmod -R 775 *
Disable it with:
shopt -u dotglob
2How to do that in zsh
? – nothing-special-here – 2014-10-25T13:57:15.320
2You use the (D)
globbing qualifier, e.g. chmod -R 775 *(D)
– slhck – 2014-10-25T14:39:06.490
2
Another option is to use find
i like it since you can have very fine grained control over it.
find <path to start from> -exec chown <options> {} \+
find -path '<path to include>' -exec chown <options> {} \+
The only downside is that find
has different syntax on different versions.
2
All files in the current directory, recursively, including hidden files:
chmod 755 -R ./* ./.[!.]*
All files in the current directory, not recursively, including hidden files:
chmod 755 ./* ./.[!.]*
This will not change an exception filename starting with 2 dots, as example, "./..thisonescapesunharmed.txt"
Also, be carefull not to remove the "x" bit, or else all your directories will not be accessible (one needs the x bit to cd into a dir).
Remember this alert: never use bare *
but ./*
instead.
To avoid problems setting permissions on directories, use find
instead.
find . -type f -exec chmod `VALUE` {} \;
Even though in linux you have the ability to change the order of args for chmod, when doing x-plat scripts between linux and OS X, this is the order you should use, e.g.,
sudo chmod 775 -R
would go belly-up, so stick to this answer. – kayleeFrye_onDeck – 2016-06-17T18:30:13.19714This (
* .*
) is not the safest way to do it. Particularly, it would recurse into parent directory, which means itchmod
s also siblings of the current directory. The proper way would be* ..?* .[^.]*
or, even better (considering the wildcards might not match any files)$(ls -A)
. – jpalecek – 2011-10-12T13:34:32.2771@jpalecek: The output of
ls
is unparseable; trying to parse it is asking for trouble. The proper approach is to use shell globbing. – Scott Severance – 2011-12-11T17:58:47.377