我想使用groupdel
命令删除一个组,但在执行此操作之前,我想将属于该组的所有文件分配给另一个组,有没有办法做到这一点?
我知道我可以用来find / -gid group_id
查找属于该组的文件,然后手动将它们分配给新组。我寻找一种自动完成任务的方法。
答案1
find / -group <groupname> -exec chown :<groupname> {} \+
应该可以解决问题。只需替换<groupname>
为适当的名称即可。
find
允许您使用主函数在它返回的文件上调用任意命令-exec
。在这种情况下,正如我们所知,我们想要更改每个匹配文件的组所有权,我们可以简单地传递命令chown
(以及任何参数 - 在这种情况下,是我们希望将匹配文件名转移到其所有权的组名,前面是:
,它告诉chown
将其视为组名而不是用户名)作为 的参数-exec
。返回的文件名将find
代替 插入到命令中{}
,并+;
表明find
它已到达外部命令的末尾,并且应将任何其他参数解析为自己的参数。使用\+
而不是\;
告诉 find 在每个命令中处理多个文件(因此效率更高)。