这两行起什么作用?
find /backup/folder -type d|xargs chmod 770
find /backup/folder -type f|xargs chmod 660
我在 Google 上搜索了一下,但就是不知道它d|xargs
能做什么f|xargs
。
答案1
您提到了d|xargs
,f|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 … {} +
)时考虑目录和(分别)文件是可行的方法。