찾기: Cygwin에서 '-exec' 매개변수 누락

찾기: Cygwin에서 '-exec' 매개변수 누락

component폴더에서 HTML 파일을 가져와서 새 폴더 를 만들고 해당 (새) 폴더를 주어진 코드를 사용하는 폴더에 삽입 component하려고 합니다 .componentbuild

find components -iname '*.html' -exec rsync -R {} ./build/ \\;

하지만 이렇게 하면 다음과 같은 오류가 발생합니다.

find: missing argument to -exec

이 문제를 해결할 수 있는 해결책을 알려주시겠습니까?

답변1

질문의 원래 공식에는 두 가지 문제가 있습니다.

  1. 실행된 명령은 -exec에 의해 종료되어야 합니다 ;.
  2. 명령 rsync형식이 올바르지 않습니다(또는예전에는, 반대로원래 질문).

이게 나야생각하다다음을 수행할 수 있습니다.

find components -iname "*.html" -exec rsync -R {} ./build/ ';'

파일을 복사하려면 rsync파일을 복사할 위치를 알려야 합니다.도착하다. 여기서는 발견된 모든 파일을 ./build/.

질문 업데이트 후:

실행된 명령은 find쉘 보호 - 문자로 종료되어야 합니다. 쉘 ;로부터 보호하는 올바른 방법은 또는 를 사용하여 인용하는 것입니다 .;\;';'

를 사용하고 있으므로 \\;에 대한 참조를 "취소"하면 ;프로세스에서는 find종료된 참조만 볼 수 있습니다 \. 아무것도 표시되지 않으므로 ;매개변수 누락에 대해 불평합니다.

당신은 npm어딘가에서 그것을 언급했습니다. JavaScript용 패키지 관리자입니다. 이제 이것을 언급한 것을 보면 find명령줄에서 실행하는 것이 아니라 일종의 스크립트에서 실행하고 있다고 믿게 됩니다 . 해당 스크립팅 언어의 특정 문법 및 구문 규칙에 따라 참조는 스크립트 내에서 다르게 작동할 수 있습니다.

find이 문제를 올바르게 해결하려면 이를 호출하는 스크립트의 컨텍스트에서 실제 호출을 확인하는 것이 가장 도움이 됩니다 .

이 정보로 질문을 업데이트하기 전에 여기에 제공한 답변은 누구나 얻을 수 있는 가장 가까운 답변입니다.


¹(또는 경우에 따라 좀 ";"더 이국적인 형태가 가장 이식성이 뛰어남)$';'$'\u003b'';'

답변2

표준에서 실행하는 경우MS-DOS 명령 프롬프트사용시그윈바이너리프로그램 찾기, 아마도 마지막 ';'(명령줄은 sh/bash/...에 의해 해석되지 않고 DOS에 의해 해석되기 때문입니다. 여기서 ';'는 특수 문자가 아닙니다):

그래서 나는 다음을 시도할 것이다:

find components -iname "*.html" -exec rsync -R {} ./build/ ;

답변3

올바른 형식은 다음과 find같습니다.

find components -iname "*.html" -exec rsync -R {} \;

관련 정보