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.
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
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" .) .