Usa chown
opzione ricorsiva di:
chown -R owner:group * .[^.]*
Specificando entrambi *
e .[^.]*
corrisponderà a tutti i file e le directory che find
voluto. Il separatore consigliato al giorno d'oggi è :
invece di .
. (Come sottolineato da justins, usando .*
non è sicuro poiché può essere espanso per includere .
e ..
, risultando in chown
cambiando la proprietà della directory principale e di tutte le sue sottodirectory.)
Se vuoi cambiare anche la proprietà della directory corrente, questo può essere semplificato in
chown -R owner:group .
Per comandi come chown
che hanno la loro ricorsione è più veloce usare questa opzione:
chown -R owner:group * .[^.]*
Avvertimento! In alcune shell, la forma chown -R owner:group * .*
sostituisce il proprietario nella directory principale / . Perché .*
significa ../../../../root, ../bin ... etc
. Tutti i percorsi. Tuttavia, la shell più utilizzata, bash , non applica .
e ..
, modelli in espansione.
Tuttavia è utile sapere che il problema principale che rallenta l'utilizzo di find
è che invochi chmown
su ogni singola directory e file trovato. È molto più veloce da usare:
find . -type f -exec chown <owner>:<group> {} +
find . -type d -exec chown <owner>:<group> {} +
come ogni volta chown
viene chiamato con tutti i parametri che si adattano alla riga di comando.
Questa modifica funziona per altri comandi, che non hanno un'opzione di ricorsione incorporata come chown
, anche. E funziona (e migliora la velocità) in situazioni in cui esiste una tale opzione di ricorsione ma non puoi usarla (ad esempio quando usi chmod
e vuoi solo cambiare directory).