无法理解find命令的语法

10 浏览
0 Comments

无法理解find命令的语法

find命令似乎与其他Unix命令不同。\n为什么在以下命令的末尾有空花括号和反斜杠?\n

find * -perm 777 -exec chmod 770 {} \;

\n我找到了花括号的一个原因,但没有找到反斜杠的原因。\n花括号显然是用于路径的\n

\n与-exec相同,只是``{}\'\'在每次调用实用程序时会被尽可能多的路径名替换。\n

0
0 Comments

问题:无法理解find命令的语法

原因:

在find命令中,需要使用转义分号来区分执行的程序的参数与find命令的附加参数。

解决方法:

在find命令中使用转义分号,以明确指示参数的边界。

代码示例:

find /path/to/directory -name "*.txt" -exec echo {} \;

0
0 Comments

在使用find命令时无法理解命令语法的原因是,find命令中的字符串{}会被当前文件的路径名所替代。分号用于终止由find实用程序调用的shell命令。为了避免被shell解释,分号需要进行转义或引用,因为分号是shell使用的特殊字符之一(列表操作符)。您可以参考以下链接查看更多信息:为什么在find命令的-exec选项中需要使用反斜杠和分号?

解决此问题的方法是,需要在使用分号之前对其进行转义或引用。这样,shell将不会对分号进行解释,而是将其作为find命令的一部分。以下是一个示例:

find /path/to/directory -type f -exec command \;

在上述示例中,通过在分号前添加反斜杠进行转义,确保了分号不会被shell解释。这样,find命令就能正确执行,并将当前文件的路径名传递给指定的命令。

通过使用转义或引用分号,您可以解决在find命令中无法理解命令语法的问题。这样,您就可以正确地使用find命令,并在需要时将其与其他命令结合使用。

0
0 Comments

在上述代码中,-exec命令后面可以跟随任意数量的参数,这些参数组成了要在找到的每个文件上执行的命令。需要有一种方式来识别最后一个参数。这就是\;的作用。注意,在-exec开关之后可能会跟随其他内容:

find euler/ -iname "*.c*" -exec echo {} \; -or -iname "*.py" -exec echo {} \;

(这个命令在euler目录中找到所有的C文件和Python文件。)

exec不需要将整个命令放在引号中的原因是,在大多数情况下,这将需要在命令中转义大量的引号。

问题的出现原因是无法理解find命令的语法。解决方法是将-exec switch后面的命令参数用引号包裹起来,这样就可以正确地解析命令语法。例如:

find euler/ -iname "*.c*" -exec echo '{}' \; -or -iname "*.py" -exec echo '{}' \;

这样,find命令就能正确执行,而不会出现语法错误。

0