I have an installation script that unzip
s a directory, then recursively chmod
s its contents.
I'm surprised it takes almost 10 times the time it takes to unzip, to run the following two commands:
find $dir -type f -exec chmod a+r "{}" \;
find $dir -type d -exec chmod a+rx "{}" \;
Am I doing something wrong, is there a faster way to change the chmod of all files and directories?
You can get rid of the
find
commands by using chmod'sX
flag:This allows you to set the same permissions on files and directories, with directories additionally being executable, with a single command:
You could do the following (assumming Linux):
This should be much faster than the combination of the two commands you indicated in your question.
Use
tar
instead. Specifically with the-p, --preserve-permissions, --same-permissions
flag.You won't can't directly zip it, but
-z, --gzip
,-j, --bzip2
or-J, --xz
ought to work well enough. If you really must have zip it's only a|
away.Given your command, I'm thinking you are spending time waiting for find not chmod.
Try:
The "-R" means recursive
When you run the unzip and other commands preface them with
To get a measurement of the time spent for the various commands.