2015-01-26 48 views
1

我有一个目录(我们将称之为/files),有~1300个子目录,每个子目录包含更多的子目录和文件。Bash - 递归地改变属于某个用户/组的目录的所有权

/files中顶级目录的90%属于apache:apache,其余属于root:root。我需要一切属于apache:apache

我想,如果我在一大堆这将是相当极端的执行递归chown,所以我在想,如果有一个更有效的方式来改变递归只root:root目录的所有权apache:apache

如果chmod可以以相同的方式在这些目录上完成,则为奖励。

回答

0

你的递归CHOWN本来可能已经被完成,但你可以使用它代替:

find . -type d \(! -user apache -o ! -group apache \) -print0 | xargs -0 chown apache:apache 

要更改有错误的许可目录:

find . -type d ! -perm 755 -print0 | xargs -0 chmod 755 
+0

chown是一种魅力,但chmod给了我'发现:无效谓词''模式\''和'chmod:'755'后缺少操作数 – BadHorsie 2015-01-27 11:40:22

+0

@BadHorsie对不起,使用了错误的标志,是'-perm'。更新了我的答案。 – 2015-01-27 17:02:31

相关问题