【问题标题】:Setting file permission for Files and Directories [closed]设置文件和目录的文件权限[关闭]
【发布时间】:2010-12-20 06:34:19
【问题描述】:

我需要对www 文件夹下的文件应用以下权限策略

664 递归到 www 中的所有文件, 755递归到www下的所有目录

我试过了

find . -type f -exec chmod 644 {} ; 
find . -type d -exec chmod 755 {} ; 

但总是报错

find: missing argument to `-exec'

解决办法是什么?

【问题讨论】:

    标签: linux file shell permissions


    【解决方案1】:

    分号前的反斜杠(或引号):

    find . -type f -exec chmod 644 {} \;
    find . -type d -exec chmod 755 {} \;
    

    shell 将您键入的分号视为命令的结尾,并且不会将其传递给 find,然后它会抱怨它丢失了。

    【讨论】:

    • 我使用的替代方法是因为我不记得 -exec 语法是: find 。 -类型 f | xargs chmod 0644.
    • 我也是,丹。它还具有执行更少命令的潜力。
    • 重要的是要记住,“内置”表示法适用于包含空格和其他奇数字符的文件名。如果您的路径中有空格并且您使用的是xargs,请使用find 选项-print0xargs 选项-0
    【解决方案2】:

    在';'之前使用反斜杠

    find . -type f -exec chmod 644 {} \; 
    

    【讨论】:

    • 还可以同时查找文件和目录 find . -type f -or -type d
    • 但是由于文件需要与目录不同的权限,因此整体表达式必须相当复杂:find . \( -type f -exec chmod 644 {} \; \) -o \( -type d -exec chmod 755 {} \; \)。您也许可以避免使用括号;不过,它们几乎可以保证工作。
    猜你喜欢
    • 2012-10-05
    • 2013-07-11
    • 2018-04-26
    • 2018-12-10
    • 2013-12-01
    • 2018-08-18
    • 1970-01-01
    • 2013-12-22
    • 2017-01-15
    相关资源
    最近更新 更多