magento查找。 类型的f -exec chmod 644 {};

为什么我不能将所有文件都更改为644,将所有-d更改为755,这是为什么呢?

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

我得到:查找:`-exec'缺少参数 谢谢

user1920187 asked 2020-08-02T08:10:52Z
3个解决方案
119 votes

进行xargs配管是一种可在find内部完成的肮脏方式。

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

您可以通过其他选项进行更多控制,例如:

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

您可以使用find做一些很酷的事情,也可以做一些非常危险的事情。 看一下“查找人”,虽然很长,但是值得快速阅读。 而且,像往常一样记住:

  • 如果您是root用户,它将成功。
  • 如果您是root(/),那么您的日子将会很糟糕。
  • 使用/ path / to / directory可以使事情变得更加安全,因为您可以清楚地定义要在哪里运行。
Phil answered 2020-08-02T08:11:31Z
16 votes

一个好的替代方法是:

find . -type f | xargs chmod -v 644

和目录:

find . -type d | xargs chmod -v 755

更明确地说:

find . -type f | xargs -I{} chmod -v 644 {}
Seth Malaki answered 2020-08-02T08:12:02Z
5 votes

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

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

现在,我可以使用以下快捷方式:

chmodd 0775 .
chmodf 0664 .
Fabian Schmengler answered 2020-08-02T08:12:26Z
translate from https://stackoverflow.com:/questions/19737525/find-type-f-exec-chmod-644