이 명령이 있습니다 (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 {} \;
도 작동합니다.