I wrote the below BASH function today. It’s good because it performs super well compared to the alternative commands (which are commented out below above the new commands):
own() { echo "Taking ownership..." #chown -R jj5:jj5 . find . \! -user jj5 -or \! -group jj5 -execdir chown jj5:jj5 "{}" \; [ "$?" = 0 ] || { echo "Could not take ownership in '$PWD'."; exit 1; } echo "Fixing directory permissions..." #find . -type d -execdir chmod u+rwx "{}" \; find . -type d -and \( \! -perm /u=r -or \! -perm /u=w -or \! -perm /u=x \) -execdir chmod u+rwx "{}" \; [ "$?" = 0 ] || { echo "Could not fix directory permissions in '$PWD'."; exit 1; } echo "Fixing file permissions..." #find . -type f -execdir chmod u+rw "{}" \; find . -type f -and \( \! -perm /u=r -or \! -perm /u=w \) -execdir chmod u+rw "{}" \; [ "$?" = 0 ] || { echo "Could not fix file permissions in '$PWD'."; exit 1; } }
The basic premise is don’t do work which doesn’t need to be done!