Shell-Script

這部分在帶有 -exec {} 的 find 命令中是什麼意思?

  • February 12, 2020

我有這個命令(KSH)

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

所以,到目前為止,我正在閱讀和破譯上面的命令,我所知道的是

-regextype posix-extended

這只是將 regextype 更改為 posix-extended

-type f

這只返回文件

-regex '.*/txt'

這只是正則表達式

-exec ls -l --full-time

執行ls -l --full-time

\\{\\}

這個我不明白。它有什麼作用?我所知道的是我需要結束-exec{} \;但為什麼花括號內有反斜杠?

我所知道的是我需要結束-exec{} \;但為什麼花括號內有反斜杠?

反斜杠刪除了以下字元的特殊含義,如下所示:

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

這也是他們在這裡所做的,除了在類似 sh 的 shell{}中並不特別,因此不需要它們。至少在fish shell中需要它們,其中平原{}被移除,或者如果你有一些看起來像 Bash/ksh/zsh 中的大括號擴展的東西,但不想擴展它。(例如echo \{foo,bar\}vs echo {foo,bar}

引用自:https://unix.stackexchange.com/questions/567111