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
?
use the find
command, like:
find /folder_with_lots_of_files -not -user someuser -execdir chown someuser {} \+
chown -R
? isn'tfind
need to read the file owner as well ? – Rabin Nov 24 '15 at 22:57chown -R
blindly attempts to update the ownership of every file. The find approach only issues achown
where truly needed. May be worth tryingxargs
too, so that a single chown process is issued for, say, every 15 files. – steve Nov 24 '15 at 22:59stat
each file in the tree and that shouldn't be (?) any cheaper that an attempt atchown
. I thinkfind
with-prune
(with-exec ... \+
) might help (if there's a criterion for pruning a subtree that the OP can use). – Petr Skocik Nov 24 '15 at 23:02chown
ing the kernel tree takes me about200ms
of sys time. Thefind
approach takes about100
. – Petr Skocik Nov 24 '15 at 23:12find
has tostat
each file to traverse the tree (to distinguish directories), and if the number ofchown
calls are relatively small, that will run faster. It would not run faster if the fraction were not small, due to overhead of running the-exec
to make subprocesses. – Thomas Dickey Nov 24 '15 at 23:16stat
andchown
and both syscalls should be quick, with the syscall overhead dominating. – Petr Skocik Nov 24 '15 at 23:28chown user:group
? Can we modify this command to accommodate it? – Prasannjeet Singh Jan 23 '23 at 18:40chown someuser
above usechown someuser:group
. – gogoud Feb 23 '23 at 08:02