How to chown/chmod all files in current directory?
Solution 1
You want to use chown username:groupname *
, and let the shell expand the *
to the contents of the current directory. This will change permissions for all files/folders in the current directory, but not the contents of the folders.
You could also do chown -R username:groupname .
, which would change the permissions on the current directory, and then recurse down inside of it and all subfolders to change the permissions.
chown -R username:groupname *
will change the permissions on all the files and folders recursively, while leaving the current directory itself alone. This style and the first style are what I find myself using most often.
Solution 2
I think you want this:
chown username:groupname *
If you also want to recursively change subdirectories, you'll need the -R
(-r
is deprecated) switch:
chown -R username:groupname *
Related videos on Youtube
Andrew
Updated on September 18, 2022Comments
-
Andrew almost 2 years
I am trying to change the ownership and permissions of some files (and directories) in the current directory. I tried this:
chown username:groupname .
...expecting that it would affect all the files in the current directory, but instead only affected the directory that I am in (which is the opposite of what I want to do). I want to change it on all the files without affecting the current directory that I am in.
How can I chown and chmod all files in current directory?
-
Shi almost 12 years
man chown
andman chmod
easily answer your question. -
djf almost 12 years@Shi I think it's a fair question. Reading that man page wouldn't help. Globbing is not part of
chmod
. It is builtin to the shell. Also reading documentation on globbing sucks the life out of you (I spent way to much time figuring out all the zsh's features). -
Shi almost 12 years@djf:
chown -R user:group .
-
-
user1984103 almost 12 years@Andrew Be on your guard though, he can be both friend and foe to the weary or unprepared.
-
teynon about 8 yearsAlso, beware of the dangers of the period. As it is placed right next to the almight "/" on the keyboard. A simple typo can easily turn
chown -R username:groupname .
intochown -R username:groupname /
. Making a 2 second task a 2 day nightmare. -
Kellen Stuart over 7 years@Tom That's why I should probably start using
-v
on all my recursive commands, but too lazy -
Scott - Слава Україні over 5 years(1) We prefer answers that include some explanation. I was taken by surprise when I read your scripts and saw what they did, because your introductory paragraph didn’t give me a clue. (2) You forgot to mention that the user must put
mkmeownerone
into the search PATH.mkmeowner
will blow up if that isn’t done. (3) Please learn how (i.e., when and where) to use quotes in shell commands and scripts. Saying${f}
isn’t a useful alternative; see this. … (Cont’d) -
Scott - Слава Україні over 5 years(Cont’d) … (4) If you run your script on a directory, it will potentially copy every file in that directory twice. (5)
expr
is antiquated. It’s more efficient to do simple string matching in the shell; bash also supports regular expression matching. For that matter, you could do the filename test infind.
(6) Yourexpr match
command tests whether${f}
ends withmkmeowner
, not whether it ends with.mkmeowner
. Therefore, the script will not work on itself. … (Cont’d) -
Scott - Слава Україні over 5 years(Cont’d) … Now, arguably, this is a good thing — you don’t want to be moving and potentially deleting a script while it’s running. (It’s not necessarily going to cause a problem, but it can be messy.) But you should understand (and document) special cases like that. (7) You might want to use underscores in multi-word strings.
dirorfile
is hard to read and understand (compare todir_or_file
), and when I sawmkmeowner
, my first thought was of a cat (mk
+meow
+ner
). -
sbcondor over 5 yearsThanks for the notes Scott. 1. I thought I did have an explanation but let me be more explicit. 2. good point. I had captured that in my original script, but took out the reference. 3. I've been writing shell scripts for 30 years, but sure, I'll try to learn more. 4. Yes it does. On purpose because if I don't own the directory, I cannot delete it. I can mention that. 5. Yah I'm old fashioned, but expr still works pretty well 6. ha good point. 7. I might, I think I I get some artistic license though, as underscores are not a rule. I need a script that makes meows!
-
sbcondor over 5 yearsI don't think there is anything wrong with ${f}, right? It's just a little longer than necessary. It's a format I use often because I may want to use a variable to make a longer string like ${f}.mkmeowner, and I don't have to remember whether $f.heck means ${f}+heck or ${f.heck}
-
Scott - Слава Україні over 5 years(3) Did you read the link? If
f
contains a space (e.g.,fat cat
), then"$f"
(with quotes) isfat cat
, but${f}
(without quotes) is two separate words:fat
andcat
. No, the braces don’t hurt, but they leave you unprotected. (7) If you dislike underscores, you can use CamelCase (MkMeOwner
) or snakeCase (mkMeOwner
). :-) -
Scott - Слава Україні over 5 yearsWell, my point #4 was that, if
bob-dir
containsbob-file
(both owned bybob
), then the script willmv -f bob-dir bob-dir.mkmeowner
andcp -pr bob-dir.mkmeowner bob-dir
(which will copybob-dir.mkmeowner/bob-file
tobob-dir/bob-file
, making it owned by you) and then (at least potentially) also domv -f bob-file bob-file.mkmeowner
andcp -pr bob-file.mkmeowner bob-file
(in the newly createdbob-dir
directory). I’ll admit, it’s not obvious to me how to fix that. -
sbcondor over 5 yearsActually I don't like shift keys...
-
sbcondor over 5 years#4. huh. ya. thinking.
-
Dave Everitt almost 5 yearsJust upvoted as the best and most concise anwser, although I'd be specific and name the directory, just to avoid a slip of the keyboard:
chown -R username:groupname directoryname