这是做什么的?`Find ... -type d|xargs chmod 770`

这是做什么的?`Find ... -type d|xargs chmod 770`

这两行起什么作用?

find /backup/folder -type d|xargs chmod 770
find /backup/folder -type f|xargs chmod 660

我在 Google 上搜索了一下,但就是不知道它d|xargs能做什么f|xargs

答案1

您提到了d|xargsf|xargs但这些本身都没有意义。第一个命令可以写成:

{ find /backup/folder -type d ; } | { xargs chmod 770 ; }

所以问题可能是:find … | xargs …做什么?它获取find输出并将其作为之后的内容的参数xargs

第一个命令find查找下的所有目录/backup/folder(包括/backup/folder。然后xargs执行:

chmod 770 <all_these_directories_here>

结果是现在所有这些目录的权限都是770(除非您一开始就无法更改它们)。这意味着所有者和组拥有完全访问权限,其他用户则无权访问。

第二条命令尝试设置下660所有文件的权限(由于-type f/backup/folder。这意味着所有者具有读写权限,组具有读写权限,其他用户无权访问。


注意,chmod-R一个选项使它递归。但是,当您需要一次设置所有权限时,它几乎没有用处,因为您几乎总是需要目录和文件的不同权限,就像在这种情况下一样。

调用chmod -R 770 /backup/folder会将其中的所有文件设置为可执行文件(对于其所有者和组而言),这很少是您想要的。另一方面,chmod -R 660 /backup/folder这会阻止您搜索目录。

运行find -type … | xargs chmod …(或find -type … -exec chmod … {} +)时考虑目录和(分别)文件是可行的方法。

相关内容