使用当前文件夹的所有者和组来更改子文件夹的所有者和组。

在一个bash脚本中,我想要递归地将任意文件夹的所有子文件夹的用户和组所有者更改为给定文件夹的所有者。
我的方法类似于使用stat -c "%U %G" . 但是这只返回一个用户名[空格]组名的模式。
当然,我可以尝试使用不同的工具来将空格替换为:,但如果有一种更“内置”的方式来将当前所有权应用于子文件夹,我更愿意使用它。
2个回答

你实际上不需要解析输出来去除空格 - 你在命令中添加了它!你可以一开始就按照你喜欢的方式格式化它(使用chown的冒号语法):
$ stat -c "%U:%G" .
zanna:unicorns

所以只需将其传递给带有命令替换的chown命令即可。
chown -R $(stat -c "%U:%G" .) .

有时候我只是对显而易见的事情视而不见。谢谢! - Jankapunkt

chown, 就像 chmod 一样,可以使用一个参考:

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.

所以:
chown --reference=/some/folder -R /some/folder