11

On a folder with millions of files this can take quite a long time:

chown someuser -Rf /folder_with_lots_of_files/

How can I speed this up if 99.9% of those files already belong to someuser?

1 Answer 1

16

use the find command, like:

find /folder_with_lots_of_files -not -user someuser -execdir chown someuser {} \+
8
  • 3
    how is it different from running chown -R ? isn't find need to read the file owner as well ?
    – Rabin
    Commented Nov 24, 2015 at 22:57
  • 1
    chown -R blindly attempts to update the ownership of every file. The find approach only issues a chown where truly needed. May be worth trying xargs too, so that a single chown process is issued for, say, every 15 files.
    – steve
    Commented Nov 24, 2015 at 22:59
  • But it'll still have to stat each file in the tree and that shouldn't be (?) any cheaper that an attempt at chown. I think find with -prune (with -exec ... \+) might help (if there's a criterion for pruning a subtree that the OP can use). Commented Nov 24, 2015 at 23:02
  • Interesting. This does appear faster. Recursively chowning the kernel tree takes me about 200ms of sys time. The find approach takes about 100. Commented Nov 24, 2015 at 23:12
  • 1
    yes @PrasannjeetSingh, instead of chown someuser above use chown someuser:group.
    – gogoud
    Commented Feb 23, 2023 at 8:02

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .