找 。 -type f -exec chmod 644 {};

时间:2013-11-02 00:21:22

标签: magento ssh find chmod

为什么这不起作用我试图将所有文件更改为644 abd all -d to 755:

find . -type f -exec chmod 644 {} ;

我得到:find:缺少`-exec'的参数  感谢

3 个答案:

答案 0 :(得分:112)

管道到xargs是一种肮脏的方式,可以在find中完成。

find . -type d -exec chmod 0755 {} \;
find . -type f -exec chmod 0644 {} \;

您可以更好地控制其他选项,例如:

find . -type d -user harry -exec chown daisy {} \;

你可以通过查找做一些非常酷的事情,你也可以做一些非常危险的事情。看看“找人”,它很长但值得快速阅读。并且,一如既往地记住:

  • 如果你是root用户,那就会成功。
  • 如果你是root(/),那么你将度过糟糕的一天。
  • 使用/ path / to /目录可以使事情变得更加安全,因为您清楚地定义了要运行的位置。

答案 1 :(得分:14)

一个很好的选择是:

find . -type f | xargs chmod -v 644

和目录:

find . -type d | xargs chmod -v 755

更明确:

find . -type f | xargs -I{} chmod -v 644 {}

答案 2 :(得分:4)

我经常需要这个,所以我在~/.bashrc文件中创建了一个函数:

chmodf() {
        find $2 -type f -exec chmod $1 {} \;
}
chmodd() {
        find $2 -type d -exec chmod $1 {} \;
}

现在我可以使用这些快捷方式:

chmodd 0775 .
chmodf 0664 .