【问题标题】:Unix Shell -- Issue a command that changes permissions for all files and directories excluding oneUnix Shell——发出一个命令,改变所有文件和目录的权限,不包括一个
【发布时间】:2015-12-14 18:58:54
【问题描述】:

我正在尝试递归更改当前工作目录中所有目录和文件的权限,但不包括其中一个目录。

我已经尝试了以下命令的多种变体,但无法完全正确

找到 . -类型 d ! -name 目录名 -exec chmod -R 700 {} +

【问题讨论】:

  • 你试过-prune选项吗?
  • lol hm 不知道 --exclude= 选项,我对 shell 很陌生,但这似乎是一个非常明显的解决方案。我试试看
  • 大脑卡在rsync 模式...
  • prune 似乎不起作用。这是我尝试过的:[code] find . -type d -prune -o -name dirName -exec chmod -R 700 {} + [/code]
  • 好吧,我虽然你会在下面找到答案。您可以使用 original 命令,只需去掉 -R,它将排除您在 ! -name directoryName 中指定的目录。 -R 现在发生的事情是不管! -name 排除,您仍然更改所有目录的模式(因为在directoryName 上操作时,chmod 正在应用于它,及其所有子项... :)

标签: shell unix


【解决方案1】:

chmod-R 参数告诉它递归工作。由于您要单独枚举所有对象,因此不应使用此选项。

【讨论】:

    【解决方案2】:

    这样做了。谢谢大家的建议。

    find . ! -name website ! -path "./website/*" -exec chmod 700 {} +
    

    【讨论】:

      猜你喜欢
      • 2010-10-12
      • 1970-01-01
      • 1970-01-01
      • 2010-11-02
      • 2016-07-04
      • 2015-12-16
      • 2020-07-01
      • 1970-01-01
      相关资源
      最近更新 更多