Certo, con il comando di ricerca quasi magico. Il modo più semplice è come questo:
find . -user 501 -exec chown Julian {} +
Il comando "trova" è spiegato nella manpage e in una serie di tutorial e tutorial come questo , nocciola l'idea breve è "trova tutto ciò che corrisponde a questi criteri, e fai questo comando con ognuno".
-
.
significa cercare in (e sotto) la directory di lavoro corrente.
-
-user 501
significa trovare solo i file di proprietà dell'utente 501.
- Si noti che questo è specifico per BSD; in alcuni altri sistemi POSIX, l'utente accetta un nome utente e un indicatore uid separato accetta ID utente numerici.
-
-exec … {} +
significa eseguire qualsiasi cosa nel "..." (in questo caso, "chown Julian") ripetutamente, passando il maggior numero possibile di file trovati.
- Quindi, se ci sono 5000 file, potrebbe finire per chiamare chown 4 volte (sul primo 1203, poi sul prossimo 1888 e così via).
- Si noti che questa è un'estensione BSD (sebbene GNU abbia un'estensione simile); c'è un equivalente portatile con
;
invece di +
, ma questo chiamerà chown una volta per ogni file, che in genere richiederà molto più tempo. (La soluzione standard è usare -print0 e convogliare il risultato su xargs-0. Ma, dato che lo stai facendo su un sistema BSD, non devi farlo.)
- Si noti che se si sta digitando questo nella shell, alcune shell richiedono di sfuggire alle parentesi, ma bash (la shell predefinita sui moderni Mac) non lo fa.