찾기: +가 포함된 -exec 매개변수가 누락되었나요?

찾기: +가 포함된 -exec 매개변수가 누락되었나요?

Bash 스크립트에 다음이 있다고 가정해 보겠습니다.

# Count the number of wood.dat files
numWoodFiles=($( find ./$1_* -type d -exec find {} -type f -name "wood\.dat" \+  | wc -l  ))

실행하면 다음 오류가 발생합니다.

find: missing argument to `-exec'

+명령을 순차적으로 실행하는 대신 명령이 더 빠르게 실행되고 동시에 실행되도록 연산자를 사용하고 싶습니다 ;.

답변1

을 사용할 때 find ... -exec ... {} +,{} ~ 해야 하다경로 이름이 명령 끝에 추가되기 +때문에 이전의 마지막 것입니다 . find오류는 ;첫 번째 후행 항목이 누락되어 발생합니다 find.

모든 하위 디렉터리를 먼저 찾은 다음 해당 하위 디렉터리에 대해 다른 검색을 수행하는 것은 이점이 없으므로 명령을 find다음 하나로 대체할 수 있습니다 find.

find "./$1_"* -type f -name 'wood.dat'

wood.dat이것은 일치하는 모든 디렉토리에서 호출된 파일을 찾습니다 "./$1_"*.

전체 과제는 다음과 같습니다.

numWoodFiles=$( find "./$1_"* -type f -name 'wood.dat' | wc -l )

(...)단일 정수에 대한 배열을 만들 필요가 없기 때문에 외부를 제거했습니다 .

관련 정보