Seems like chown with the recursive flag will not work on hidden directories or files. Is there any simple workaround for that?
I'm pretty sure the
-R flag does work - it always has for me anyway. What won't work, and what tripped me up early in my command line usage, is using
* in a directory with hidden files/directories. So doing
$ chown -R /home/user/*
will not do the hidden files and directories. However if you follow it with
$ chown -R /home/user/.[^.]*
then you will do all the hidden files, (but not
/home/user/.* would do). Having said all that, I would expect
$ chown -R /home/user
to get all the hidden files and directories inside
/home/user - though that will of course also change the permissions of the directory itself, which might not be what you intended.
You can change the
dotglob attribute temporarily to expand . files and then revert it.
shopt -s dotglob; chown -R user:group FOLDER; shopt -u dotglob
dotglob can be found here
Also, if you're like me you'll probably be running chown mostly from the current directory. I was accustomed to running it like this:
chown rails.rails -R * . Simply changing the asterisk to a dot (short for the current directory) like this:
chown rails.rails -R . brings in all hidden directories.
chown will work with hidden files and directories. In the following example, we will change user and group ownership for all files in
~/some/folder. All files includes all hidden files (e.g.
.profile etc.) and folders at the
~/some/folder level and below. Note in particular that we do not wish to change ownership of
~/some, and so we will exclude the file
~/some/.. from the ownership changes.
$ cd ~/some/folder $ sudo chown -R usrname:grpname . $
Using for-loop with
ls -A option, We can find all hidden files and directory exclude
.. and then change the ownership for all hidden files and directory.
for i in `ls -A | grep "^\."`;do chown -R user:group $i;done
xargs option with
ls -A | grep "^\." | xargs chown user:group
For More details Click Here and Visit my Site