在 bash 脚本中,我想要以递归方式将任意文件夹的所有子文件夹更改为该给定文件夹的用户和组所有者。
我的方法类似于使用stat -c "%U %G" .
但这只返回username[whitespace]groupname
当然,我可以尝试使用不同的工具来替换空格,:
但如果有的话,我更愿意使用更“内置”的方式,将当前所有权应用于子文件夹。
答案1
实际上,您不需要解析输出来删除空格 - 您可以在命令中添加它!您可以首先按照自己的喜好格式化它(使用chown
冒号语法):
$ stat -c "%U:%G" .
zanna:unicorns
因此只需将其传递给chown
命令替换:
chown -R $(stat -c "%U:%G" .) .
答案2
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