递归地更改所有目录的权限并仅排除一个目录

递归地更改所有目录的权限并仅排除一个目录

我想递归地更改所有文件和目录的权限,但排除某些目录。

find . -name user -prune -o -type d -exec chmod 755 {} \;

但使用这个,它只改变目录,而不是递归。目录的内容不会改变。

尽管,

find . -name user -prune -o -type d -exec chmod -R 755 {} \;

这将更改所有目录及其内容,并包括我要排除的“用户”目录。

那么,如何递归地更改所有文件和目录的权限但不包括用户目录呢?

提前致谢。

答案1

这可以通过 -path 参数来完成。

find . -path dir -prune -o -name user -type d -exec chmod -R 755 {} \;

如果您想忽略多个目录,您可以这样做。

find . \( -path dir1 -o -path dir2 -o -path dir3 \) -prune -o -name user -type d -exec chmod -R 755 {} \;

相关内容