我使用 find 命令时没有指定目录

我使用 find 命令时没有指定目录

我使用了此命令而没有指定目录:

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一次性获得全部已建立的结果。

相关内容