-exec \{\}가 포함된 find 명령에서 이 부분은 무엇을 의미합니까? [복사]

-exec \{\}가 포함된 find 명령에서 이 부분은 무엇을 의미합니까? [복사]

이 명령이 있습니다 (KSH)

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

그래서 지금까지 저는 위의 명령을 읽고 해독하고 있습니다. 제가 아는 것은

-regextype posix-extended

이것은 정규식을 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와 같은 쉘에서는 처음부터 특별하지 않기 때문에 필요하지 않다는 점을 제외하면 이것이 여기서 수행하는 작업입니다 . 최소한 평원이 {}제거된 물고기 껍질에 필요하거나 Bash/ksh/zsh에 버팀대 확장처럼 보이지만 확장하고 싶지 않은 경우에 필요합니다. (예: echo \{foo,bar\}echo {foo,bar})

답변2

{}는 find로 찾은 엔터티로 대체됩니다. 적어도 bash에서는 {}를 탈출할 필요가 없으므로 a ...-exec ls -l --full-time {} \;도 작동합니다.

관련 정보