내가 이렇게 하면 find
:
find ${TRIADS_DIR}/*.dc.results -path "*amblock/stats.*HEAD" -o -path "*amblock/stats.*BRIK"
그런 다음 STDOUT에서 기대하는 결과를 얻습니다.
tp101.day1.dc.results/amblock/stats.tp101_day1+tlrc.HEAD
tp101.day1.dc.results/amblock/stats.tp101_day1+tlrc.BRIK
tp101.day2.dc.results/amblock/stats.tp101_day2+tlrc.HEAD
tp101.day2.dc.results/amblock/stats.tp101_day2+tlrc.BRIK
...
-exec
찾은 파일을 연결하는 절을 추가하면 다음과 같습니다 .
find ${TRIADS_DIR}/*.dc.results -path "*amblock/stats.*HEAD" -o -path "*amblock/stats.*BRIK" -exec ln -s {} ${TRIADS_GROUP} \;
그런 다음 BRIK만 연결합니다.
stats.tp101_day1+tlrc.BRIK@
stats.tp101_day2+tlrc.BRIK@
...
질문
- 무슨 일이에요?
단일 와일드카드 표현식을 사용하여 find가 .HEAD 및 .BRIK를 반환하도록 지시하는 더 효율적인 방법이 있습니까? 나는 비슷한 것을 시도했습니다 :
find ${TRIADS_DIR}/*.dc.results -path "*amblock/stats.*{HEAD,BRIK}"
하지만 제대로 작동하지 못했습니다.
답변1
질문 1: 무슨 일이 일어났나요?
당신은 -o
당신의 주장을 분열시키고 있습니다. -exec
같은 쪽의 콘텐츠가 -o
성공한 경우 에만 실행됩니다( -path "*amblock/stats.*BRIK"
). 두 조건 모두에서 실행 하려면 -exec
해당 조건을 괄호로 묶어야 합니다.
find ${TRIADS_DIR}/*.dc.results \( -path "*amblock/stats.*HEAD" -o -path "*amblock/stats.*BRIK" \) -exec ln -s {} ${TRIADS_GROUP} \;
질문 2: 단일 와일드카드 표현식을 사용하여 find가 .HEAD 및 .BRIK를 반환하도록 지시하는 더 효율적인 방법이 있습니까?
아니, 일종의. 일부 구현에는 대신 사용할 수 있는 비표준 조건자가 find
있지만 이를 "더 효율적"이라고 부르지는 않습니다.-regex