
내가 이렇게 하면 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