이 디렉토리를 제외한 모든 파일 구조를 가져옵니다.

이 디렉토리를 제외한 모든 파일 구조를 가져옵니다.

디렉터리 계층 구조인 전체 파일 구조(수천 개의 파일과 수백 개의 디렉터리 포함)를 복사하고 싶습니다.노드 모듈복사 프로세스에서 제외하려는 디렉터리입니다.

이름이 지정된 디렉터리를 제외한다는 옵션을 사용하여 디렉터리와 해당 디렉터리의 모든 파일 및 하위 디렉터리에서 반복적으로 복사할 수 있는 Unix 명령이 있습니까 <name>?

그것은 다음과 같습니다:

cp root/ rootCopy/ --except node_modules

?

그렇지 않다면 bash 등을 작성하지 않고도 명령줄에서 이 작업을 쉽게 수행할 수 있는 방법이 있습니까?

답변1

rsync또는 명령을 사용해 볼 수 있습니다 tar.

바라보다이것또는이것우편 엽서.

~에서rsync매뉴얼 페이지

    --exclude=PATTERN       exclude files matching PATTERN
    --exclude-from=FILE     read exclude patterns from FILE

rsync -avz --exclude 'dir*' source/ destination/

답변2

소름 끼치는 접근 방식이지만 나에게는 효과가 있었습니다.

(find source|egrep -v "node_modules|^source/exact/node_plugin" && echo tmptarget)|xargs cp --parents
mv tmptarget/source target

필요한 경우 설명하십시오. cp작동 방식은 다음과 같습니다.

cp source1 source2 ... sourceN target
  • 따라서 find전체 구조를 인쇄하십시오.
  • egrep불필요한 분기를 모두 제외하는 데 사용됩니다 . 패턴을 올바르게 구성했는지 확인하세요. ^정확한 분기를 제외하거나 node_modules모든 분기를 제외하려면 전체 경로를 사용하세요.
  • 명령을 사용하여 대상 폴더를 인쇄하십시오 echo.
  • xargs이 모든 라인을 직접 안내해 드리겠습니다 .cp
  • --parents여기서는 이 옵션을 사용할 수 없으므로 -r대상 폴더의 모든 내용이 엉망이 되기 때문에 상위 폴더를 생성해야 합니다.
  • 궁극적으로 mv실제 목표를 달성하는 새로운 구조

관련 정보