일부 디렉토리를 제외하고 재귀적으로 Zip

일부 디렉토리를 제외하고 재귀적으로 Zip

디렉토리를 압축하고 일부 하위 디렉토리를 제외하고 싶습니다. 다음과 같은 구조가 있다고 가정해 보겠습니다.

directory
   subdirectory 1
   subdirectory 2
     project 1
       html
         directory 1 
         vendor
         node_modules
         ... (other directories)
     project 2
       html
         directory 2 
         vendor
         node_modules
         ... (other directories) 

전체 메인 디렉토리를 ZIP으로 압축하고 싶지만 다음과 같은 경로는 제외하고 싶습니다.

subdirectory2/*/html/vendor/**
subdirectory2/*/html/node_modules/**

어디:

  • *- 1레벨 디렉토리입니다.
  • **- 모든 파일 및 하위 디렉터리가 포함된 디렉터리입니다.

문제는 그것들 project 1과 가 project 2매우 역동적이라는 것입니다. 그것들이 여러 개 있습니다. 또한 vendor디렉토리(이론적으로도 node_modules)는 예를 들어 다른 위치에 배치될 수 있으므로 하위 디렉토리만 제외하고 프로젝트의 지정된 html 디렉토리에 정확하게 위치한 특정 하위 디렉토리만 project 1/html/public/vendor제외하고 싶습니다 .vendorvendor

명령 만 사용하여 그렇게 복잡한 것을 만들 수 있습니까? zip아니면 이를 위해 일부 bash 스크립트를 작성해야 합니까?

차이점이 있다면 MacOS를 사용하고 있습니다.

지금까지 내가 달성한 것은 다음과 같습니다.

cd directory && zip test-zip.zip  * -r -T -x */*/html/vendor/** */*/html/node_modules/**

거의 작동하는 것 같지만 빈 공급업체 및 노드 모듈 디렉터리가 생성됩니다(그러나 해당 콘텐츠는 포함되지 않음).

답변1

해결책은 다음과 같습니다.

cd directory && 
zip test-zip.zip  * -r -T -x "*/*/html/vendor/" "*/*/html/node_modules/" "*/*/html/vendor/**" "*/*/html/node_modules/**"

따라서 이 디렉토리와 해당 디렉토리의 모든 항목을 제외하고 유효한 방식으로 확장되도록 모든 항목을 따옴표로 묶습니다.

관련 정보