5 votos

Cambiar el propietario de todos los archivos que pertenecen a x

Copié archivos de mi MacBook, principalmente archivos de /usr. El único usuario en mi ordenador se llama 'Julian' (como en mi MacBook). Muchos de los archivos copiados son ahora propiedad de '501' (id de "Julian" de la MB).

drwxrwxr-x@  28 501     admin   952  8 Jul 23:02 man/

¿Existe una forma de cambiar el propietario de todos los archivos de '501' a 'Julian'?

8voto

Claro, con el comando casi mágico de encontrar. La forma más sencilla es así:

find . -user 501 -exec chown Julian {} +

El comando "find" se explica en la página de manual, y en una serie de tutoriales y howtos como este La idea es "encontrar todo lo que coincida con estos criterios, y hacer este comando con cada uno".

  • . significa buscar en (y debajo de) el directorio de trabajo actual.
  • -user 501 significa encontrar sólo los archivos que pertenecen al usuario 501.
    • Tenga en cuenta que esto es específico de BSD; en algunos otros sistemas POSIX, user toma un nombre de usuario, y una bandera uid separada toma los ID de usuario numéricos.
  • -exec … {} + significa ejecutar lo que sea que esté en el " " (en este caso, "chown Julian") repetidamente, pasándole todos los archivos encontrados que sea posible.
    • Así, si hay 5000 archivos, puede terminar llamando a chown 4 veces (en los primeros 1203, luego en los siguientes 1888, y así sucesivamente).
    • Tenga en cuenta que se trata de una extensión BSD (aunque GNU tiene una extensión similar); existe un equivalente portable con ; en lugar de + pero esto llamará a chown una vez por cada archivo, lo que generalmente tomará mucho más tiempo. (La solución estándar es usar -print0 y canalizar el resultado a xargs -0. Pero, como estás haciendo esto en un sistema BSD, no tienes que hacer eso).
    • Tenga en cuenta que si está escribiendo esto en el shell, algunos shells requerirán que escape las llaves, pero bash (el shell por defecto en los Macs modernos) no lo hace.

3voto

Esto hará lo que quieres:

find . -type f -uid 501 -print0 | xargs -0 sudo chown Julian

Explicación:

  • El . inicia la búsqueda desde el directorio actual.
  • El -type f sólo requiere que coincidan los archivos, no los directorios. (Omita esto si quiere cambiar también los directorios).
  • El -uid 501 requiere que todos los partidos sean propiedad de este usuario.
  • El -print0 separa las coincidencias mediante nulos en lugar de espacios para que no se malinterprete ninguna ruta que contenga espacios.
  • El xargs -0 garantiza que xargs La entrada busca delimitadores nulos en lugar de espacios. Como chown puede aceptar varios archivos, xargs se utiliza para garantizar que sudo chown se ejecuta sólo con la frecuencia necesaria para afectar a todos los archivos de la lista. (En este sentido, es mucho más rápido que un find ... -exec .)

1voto

No estoy seguro de si esto romperá las cosas en OS X si los archivos están relacionados con el sistema. Pero para cambiar el propietario de los archivos haga un

sudo chown -R Julian <directory>

-R significa que se cambia el propietario de todos los archivos recusados en el directorio actual. Así que tenga cuidado.

man chown debería darle algunos detalles adicionales.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X