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.