这部分在带有 -exec \{\} 的 find 命令中意味着什么?

这部分在带有 -exec \{\} 的 find 命令中意味着什么?

我有这个命令(KSH)

find <path> -regextype posix-extended -type f -regex '.*/txt' -exec ls -l --full-time \{\} \;
| sort -bnr

所以,到目前为止我正在阅读和破译上面的命令,我所知道的是

-regextype posix-extended

这只是将 regextype 更改为 posix-extend

-type f

这只返回文件

-regex '.*/txt'

这只是正则表达式

-exec ls -l --full-time

执行ls -l --full-time

\\{\\}

这个我不明白。它有什么作用?我所知道的是我需要-exec以以下结尾{} \;,但为什么花括号内有反斜杠?

答案1

我所知道的是我需要-exec以以下结尾{} \;,但为什么花括号内有反斜杠?

反斜杠删除了以下字符的特殊含义,如下所示:

$ echo $SHELL
/bin/bash
$ echo \$SHELL
$SHELL

这也是它们在这里所做的,只不过在类似 sh 的 shell 中一{}开始并不特殊,所以不需要它们。至少在鱼壳中需要它们,其中平原{}被删除,或者如果您有看起来像 Bash/ksh/zsh 中的大括号扩展的东西,但不想扩展它。 (例如echo \{foo,bar\}vs echo {foo,bar}

答案2

{} 被 find 找到的实体替换。至少在 bash 中,不需要转义 {},因此 a ...-exec ls -l --full-time {} \;也可以工作。

相关内容