我正在运行一个脚本来修复rsync之后的文件所有权和权限。我想知道,除了完成任务的最佳方式之外,是否有一种同时运行chmod和chown的方法?
在我的脚本的当前迭代中,我要对文件进行两次find处理。
find /var/www/mysite -exec chown www-data:www-data {} \;
find /var/www/mysite -type f -exec chmod 775 {} \;我想,如果我可以用一个命令同时更改权限和所有者/组,那就太好了。在进行了一些googling搜索之后,我惊讶地发现,这样的命令、参数或选项并不存在。
我是否可以同时更改权限和所有权,以避免对每个文件进行两次find处理?
编辑:社区编辑或帖子,或暗示这个问题是“使用1命令更改所有文件夹权限”的重复。这个问题不同,因为它要求同时更改权限和所有权,而不仅仅是权限。
发布于 2020-04-15 16:57:16
您可以传递多个exec命令:
find /var/www/mysite -exec chown www-data:www-data {} \; \
-type f -exec chmod 775 {} \;发布于 2020-04-16 02:32:30
为了完整起见,xargs也可以在管道中做各种有趣的事情。
find . -type f -print0 | xargs -0 -I VAR -- sh -c 'chmod 775 "VAR" && chown www-data:www-data "VAR" '这会产生一个文件名流(而不是目录名),其中包含分隔符的空号,因此处理文件名中的空格。
-0告诉xargs分离空输入。
-I VAR说使用VAR作为“变量名”而不是{}
--和它之后的一切都是为每一行运行的
这可能更具可读性,但它将为双桶命令的每次运行启动一个新的shell。
https://unix.stackexchange.com/questions/580271
复制相似问题