How to chown/chmod all files in current directory?

316,896

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 *

Share:
316,896

Related videos on Youtube

Andrew
Author by

Andrew

Updated on September 18, 2022

Comments

  • Andrew
    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
      Shi almost 12 years
      man chown and man chmod easily answer your question.
    • djf
      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
      Shi almost 12 years
      @djf: chown -R user:group .
  • user1984103
    user1984103 almost 12 years
    @Andrew Be on your guard though, he can be both friend and foe to the weary or unprepared.
  • teynon
    teynon about 8 years
    Also, 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 . into chown -R username:groupname /. Making a 2 second task a 2 day nightmare.
  • Kellen Stuart
    Kellen Stuart over 7 years
    @Tom That's why I should probably start using -v on all my recursive commands, but too lazy
  • Scott - Слава Україні
    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 - Слава Україні
    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 in find. (6) Your expr match command tests whether ${f} ends with mkmeowner, not whether it ends with .mkmeowner.  Therefore, the script will not work on itself.  … (Cont’d)
  • Scott - Слава Україні
    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 to dir_or_file), and when I saw mkmeowner, my first thought was of a cat (mk + meow + ner).
  • sbcondor
    sbcondor over 5 years
    Thanks 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
    sbcondor over 5 years
    I 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 - Слава Україні
    Scott - Слава Україні over 5 years
    (3) Did you read the link?  If f contains a space (e.g., fat cat), then "$f" (with quotes) is fat cat, but ${f} (without quotes) is two separate words: fat and cat.  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 - Слава Україні
    Scott - Слава Україні over 5 years
    Well, my point #4 was that, if bob-dir contains bob-file (both owned by bob), then the script will mv -f bob-dir bob-dir.mkmeowner and cp -pr bob-dir.mkmeowner bob-dir (which will copy bob-dir.mkmeowner/bob-file to bob-dir/bob-file, making it owned by you) and then (at least potentially) also do mv -f bob-file bob-file.mkmeowner and cp -pr bob-file.mkmeowner bob-file (in the newly created bob-dir directory).  I’ll admit, it’s not obvious to me how to fix that.
  • sbcondor
    sbcondor over 5 years
    Actually I don't like shift keys...
  • sbcondor
    sbcondor over 5 years
    #4. huh. ya. thinking.
  • Dave Everitt
    Dave Everitt almost 5 years
    Just 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