2

我试图弄清楚以下命令会做什么。我从 Linux shell 脚本中提取了它,当我输入它时,它会进入提示符 (>)。但我不知道在这个提示中输入什么。

    find ~/dev/tools/flex-4.5.0.20967 -type d -exec chmod o+rx '{}' \

我知道 find 命令的用途。它正在搜索指定的目录,检查它是否确实是一个目录并在该目录上执行 chmod 命令。我无法弄清楚的是 chmod 命令的格式。

我检查了 chmod 的手册页,但无法确定上述 chmod 格式的功能。

谢谢。

4

4 回答 4

5

检查手册页以获取find. 这{} \;是特定于-exec标志的find

出现 > 提示是因为您错过了一个 ';' 在......的最后 '\;'

find ~/dev/tools/flex-4.5.0.20967 -type d -exec chmod o+rx '{}' \;

该命令查找下的所有子目录~/dev/tools/flex-4.5.0.20967。没有它,-type d它还将包含文件夹下的文件。

-exec my_command my_args1 my_args2 '{}' \;部分通过 find 为每个匹配的结果指定,执行命令my_command为:

my_command my_args1 my_args2 matched_result

{}替换为匹配的结果,在这种情况下是一个目录,表示\;参数的终止my_command

于 2012-10-11T09:03:35.403 回答
4

chmod:“更改模式”,通常用于设置或更改文件权限。

o+ 为“其他人”添加权限(其他可能的值是 u(user) 和 g(group) with - (remove)

r 读取权限

x 执行权限(其他可能的值包括 w - 写权限)

{} 是用于find在正在执行的命令中指示“在此处插入当前文件名”的设备。

于 2012-10-11T09:03:57.717 回答
1

要检查的手册页是 find 命令的。chmod 适用于 find 命令产生的每个目录。因此,要告诉 chmod 命令中目录的放置位置,使用“{}”语法指示。

例如,要将 find 命令生成的每个 .txt 文件移动到 ~/backup 目录:

find . -name "*.txt" -exec mv '{}' ~/backup \;

希望这可以帮助。

于 2012-10-11T09:10:18.973 回答
0

find 命令搜索 ~/dev/tools/flex-4.5.0.20967 中的所有子目录。对于它在其上执行的每个找到的目录chmod o+rx '{}'。'{}' 符号被替换为当前找到的子目录名称。

于 2012-10-11T09:04:49.167 回答