![-exec \{\}가 포함된 find 명령에서 이 부분은 무엇을 의미합니까? [복사]](https://linux55.com/image/167387/-exec%20%5C%7B%5C%7D%EA%B0%80%20%ED%8F%AC%ED%95%A8%EB%90%9C%20find%20%EB%AA%85%EB%A0%B9%EC%97%90%EC%84%9C%20%EC%9D%B4%20%EB%B6%80%EB%B6%84%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9D%84%20%EC%9D%98%EB%AF%B8%ED%95%A9%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
이 명령이 있습니다 (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 {} \;
도 작동합니다.