Usa chown
Opción recursiva:
chown -R owner:group * .[^.]*
Especificando ambos *
y .[^.]*
coincidirá con todos los archivos y directorios que find
haría. El separador recomendado hoy en día es :
en lugar de .
. (Como lo señaló justins, usando .*
no es seguro ya que se puede expandir para incluir .
y ..
, resultando en chown
cambiando la propiedad del directorio principal y todos sus subdirectorios).
Si también desea cambiar la propiedad del directorio actual, esto se puede simplificar a
chown -R owner:group .
Para comandos como chown
que tienen su propia recursividad es más rápido usar esa opción:
chown -R owner:group * .[^.]*
¡Advertencia! En algunos shells, la forma chown -R owner:group * .*
reemplaza al propietario en el directorio raíz / . Porque .*
significa ../../../../root, ../bin ... etc
. Todos los caminos. Sin embargo, el shell más utilizado, bash , no aplica .
y ..
, patrones en expansión.
Sin embargo, es útil saber que el principal problema que ralentiza el uso de find
es que invocas chmown
en cada directorio y archivo encontrado. Es mucho más rápido de usar:
find . -type f -exec chown <owner>:<group> {} +
find . -type d -exec chown <owner>:<group> {} +
como cada vez chown
se llama con tantos parámetros como quepan en la línea de comandos.
Ese cambio funciona para otros comandos, que no tienen una opción de recursión incorporada como chown
, también. Y funciona (y mejora la velocidad) en situaciones en las que existe una opción de recurrencia pero no puede usarla (por ejemplo, cuando usa chmod
, y solo desea cambiar de directorio).