如何以递归方式 chmod 所有文​​件夹以排除特定文件夹内的所有文件夹?

如何以递归方式 chmod 所有文​​件夹以排除特定文件夹内的所有文件夹?

我想要chmod特定文件夹内的所有文件夹和子文件夹,但我想排除一个文件夹(及其包含的所有子文件夹)。

到目前为止,我所掌握的是来自 StackOverflow 的以下解决方案:

以下是我目前想到的:

find . -type d \( -path ./node_modules \) -prune -o -print -exec chmod 644 {}\;

问题是,无论有没有,-print我都会收到以下错误:

发现:缺少“-exec”参数

以下行具有我需要-exec chmod 644{}\;读取的预期结果:

find . -type d \( -path ./node_modules \) -prune -o -print

我在将数据传输到的那行中遗漏了什么-exec

答案1

删除-print,退出( and )并在后面添加空格{}

find . -type d \( -path ./node_modules \) -prune -o -exec chmod 644 {} \;

答案2

经过一番尝试后,我发现以下方法对我有用:

chmod所有文件递归排除文件:

find . -not -path "*/node_modules*" -type f -exec chmod 644 {} \;

chmod所有文件夹递归排除文件夹:

find . -not -path "*/node_modules*" -type d -exec chmod 755 {} \;

答案3

chmod 所有文​​件夹递归查找 /opt/git/ -type d -exec chmod 755 {} +

chmod 所有文​​件递归查找 /opt/git/ -type f -exec chmod 755 {} +

路易斯·马里尼奥

相关内容