为什么这行不通,我试图将所有文件修改为 644 和所有 -d 修改为 755:
find . -type f -exec chmod 644 {} ;
我收到的错误信息是:找不到“-exec”参数的参数值,谢谢。
find . -type d -exec chmod 0755 {} \;
find . -type f -exec chmod 0644 {} \;
您可以通过其他选项来更加控制,例如:
find . -type d -user harry -exec chown daisy {} \;
使用 find 命令你可以完成一些很酷的操作,但也可能会做出危险的事情。看一下 "man find",虽然比较长但值得一读。并且,始终记住:
find . -type f -exec chmod 0644 {} +
就可以了,这与 xargs 方法基本相同,构建一个命令行。 (上面的 \ 仅用于转义分号。) - johnthackerfind . -type d -exec chmod 0755 {} \; && find . -type f -exec chmod 0644 {} \;
- lucaferrario一个很好的替代方案是这个:
find . -type f | xargs chmod -v 644
以及对于目录:
find . -type d | xargs chmod -v 755
更明确地说:
find . -type f | xargs -I{} chmod -v 644 {}
~/.bashrc
文件中创建了一个函数:chmodf() {
find $2 -type f -exec chmod $1 {} \;
}
chmodd() {
find $2 -type d -exec chmod $1 {} \;
}
现在我可以使用这些快捷键:
chmodd 0775 .
chmodf 0664 .
\;
结束,而不是仅以;
结束。 - Michael Berkowski-exec
后面的所有内容都被视为它的参数。如果你只使用分号;
,它将被视为终止整个find
命令,但你实际上需要终止exec
命令,因此必须将分号作为参数字符串的一部分进行转义处理。 - Michael Berkowski