Seems like chown with the recursive flag will not work on hidden directories or files. Is there any simple workaround for that?
10 Answers
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 . or .. as /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.
- 9,770
i believe the following command should work for this
chown -hR userid:usergroup /nameofdirectory/nameofsubdir/
- 3,721
- 151
"chown -R" works, but an alternative would be using find.
find /path/to/dir -exec chown USER {} \;
- 3,721
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.
- 289
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. .bashrc,.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 .
$
- 294
- 2
- 9
Using for-loop with ls -A option, We can find all hidden files and directory exclude . and .. and then change the ownership for all hidden files and directory.
for i in `ls -A | grep "^\."`;do chown -R user:group $i;done
Use xargs option with ls -A
ls -A | grep "^\." | xargs chown user:group
For More details Click Here and Visit my Site
To chown ALL files in current directory and subdirectories for current user;
find . -exec chown $(whoami) {} \;
or if user can't chown some files due to restricted permissions;
sudo find . -exec chown $(logname) {} \;
- 131
- 4