디렉터리 계층 구조인 전체 파일 구조(수천 개의 파일과 수백 개의 디렉터리 포함)를 복사하고 싶습니다.노드 모듈복사 프로세스에서 제외하려는 디렉터리입니다.
이름이 지정된 디렉터리를 제외한다는 옵션을 사용하여 디렉터리와 해당 디렉터리의 모든 파일 및 하위 디렉터리에서 반복적으로 복사할 수 있는 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
실제 목표를 달성하는 새로운 구조