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 )
(...)
단일 정수에 대한 배열을 만들 필요가 없기 때문에 외부를 제거했습니다 .