web-dev-qa-db-fra.com

chown sous-dossiers avec le propriétaire et le groupe du dossier actuel

Dans un script bash, je veux récursivement chown tous les sous-dossiers d'un dossier arbitraire avec les propriétaires d'utilisateurs et de groupes de ce dossier donné.

Mon approche est quelque chose comme utiliser stat -c "%U %G" .

Mais cela ne renvoie qu'un motif de username[whitespace]groupname

Bien sûr, je pourrais simplement essayer différents outils pour remplacer les espaces blancs par un :, mais je préférerais utiliser une méthode plus "intégrée", le cas échéant, pour appliquer simplement la propriété actuelle aux sous-dossiers.

8
Jankapunkt

chown , comme chmod, peut utiliser une référence:

chown [OPTION]... --reference=RFILE FILE...

Change the owner and/or group of each FILE to OWNER and/or GROUP.  With
--reference, change the owner and group of each FILE to those of RFILE.

Alors:

chown --reference=/some/folder -R /some/folder
6
muru

Vous n'avez pas réellement besoin d'analyser la sortie pour supprimer les espaces - vous l'avez ajouté dans votre commande! Vous pouvez simplement le formater comme vous le souhaitez (avec la syntaxe du côlon de chown):

$ stat -c "%U:%G" .
zanna:unicorns

Il suffit donc de passer cela à chown avec la substitution de commande:

chown -R $(stat -c "%U:%G" .) .
8
Zanna