Cambia proprietario per tutti i file di proprietà di x

4

Ho copiato i file dal mio MacBook, principalmente da / usr. L'unico e unico utente sul mio computer si chiama 'Julian' (come nel mio MacBook). Molti dei file copiati sono ora di proprietà di "501" (id di "Julian" dal MB).

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

C'è un modo per cambiare il proprietario di tutti i file di proprietà di "501" in "Julian"?

    
posta Julian 10.07.2012 - 01:39
fonte

3 risposte

7

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.
risposta data 10.07.2012 - 02:21
fonte
2

Questo farà ciò che vuoi:

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

Spiegazione:

  • Il . avvia la ricerca dalla directory corrente.
  • Il -type f richiede che solo i file corrispondano, non le directory. (Omettalo se vuoi cambiare anche le directory).
  • Il -uid 501 richiede che tutte le corrispondenze siano di proprietà di questo utente.
  • Il -print0 separa le corrispondenze in base a null anziché in spazi, in modo che qualsiasi percorso contenente spazi non venga interpretato in modo errato.
  • Il xargs -0 garantisce che xargs input cerchi delimitatori nulli invece di spazi. Poiché chown può accettare più file, xargs viene utilizzato per garantire che sudo chown venga eseguito solo ogni volta che è necessario per influenzare ogni file elencato. (In questo senso è molto più veloce di un equivalente find ... -exec .)
risposta data 10.07.2012 - 02:25
fonte
0

Non sono sicuro se ciò causerà la rottura di cose in OS X se i file sono correlati al sistema. Ma per cambiare il proprietario dei file fai un

sudo chown -R Julian <directory>

-R significa che il proprietario è cambiato per tutti i file in modo ricorrente nella directory corrente. Quindi fai attenzione.

man chown dovrebbe darti alcuni dettagli aggiuntivi.

    
risposta data 10.07.2012 - 01:43
fonte

Leggi altre domande sui tag