对所有目录递归更改权限,只排除一个目录

时间:2016-09-01 05:16:42

标签: recursion chmod

我想以递归方式更改所有文件和目录的权限,但不包括某些目录。

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

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

而,

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

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

那么,如何递归更改所有文件和目录的权限,但排除用户目录?

1 个答案:

答案 0 :(得分:0)

您还需要排除特定用户目录,同时包含其他所有目录。

  1. 用户
  2. 的所有子项上将文件搜索切换为全名
  3. 在"或目录"上添加用户的排除
  4. 我认为这样做

    find . -wholename "*user/*" -prune -o \
        -type d -a -wholename^"./user$" -exec chmod -R 755 {} \;