我使用了此命令而没有指定目录:
sudo find -type d -exec chmod 755 {} \
发生了什么?我当时在 /var/www/html 文件夹中。它是否更改了 /var/www/html 目录之外的任何权限?
答案1
Ubuntu 使用 GNU find
,如果您未指定工作目录,它将假定当前工作目录。具体来说,它假定.
和 命令找到的所有项目./
在传递给命令时都将在其路径中添加前缀-exec
。因此,它只会遍历/var/www/html
;如果您的当前工作目录确实不在 中,/var/www/html
则不会影响该目录之外的任何内容。 其他实现find
可能需要目录参数,例如 BSD find
。
然而,成熟的回答提到,您的语法不完整,因此该命令不会运行。\
末尾的将告诉 shell 命令不完整,并显示PS2
提示符,即>
答案2
您错过了 a;
或 a{} +
并且可以跳过路径(运行寻找从当前目录开始)
sudo find -type d -exec chmod 755 {} \;
在这种情况下,您的搜索从当前目录及其子目录开始。但您显然可以设置目录。
当前目录:
sudo find . -type d -exec chmod 755 {} \;
绝对路径:
sudo find /var/www/html -type d -exec chmod 755 {} \;
解释:
sudo
- 以超级用户身份运行
find -type d
- 搜索仅限目录(如果您需要文件,则仅使用find -type f
。如果您不关心文件或目录,只需删除-类型 d[f]来自命令)。
-exec chmod 755 {} \;
- 运行命令chmod 755对于命令中每个已建立的对象,其 init -exec 参数(在本例中寻找命令)。
-exec chmod 755 {} +
- 运行命令chmod 755一次性获得全部已建立的结果。