폴더 구조를 유지하면서 디렉토리에서 파일의 하위 집합을 복사하는 방법은 무엇입니까?

폴더 구조를 유지하면서 디렉토리에서 파일의 하위 집합을 복사하는 방법은 무엇입니까?

파일의 일부 하위 집합을 dirA에서 dirB로 이동하고 싶지만(파일 이름에 "blah"가 포함된 파일 가정) 모든 중첩 디렉터리가 새 위치에서 동일해지기를 원합니다. 어떻게 해야 하나요?

답변1

rsync필터 규칙의 마법:

$ rsync -av --filter="+ */" --filter="-! *blah*" /source /dest

필터링 규칙에 대한 자세한 내용은 매뉴얼 페이지를 참조하십시오 rsync. 그러나 여기에는 이러한 특정 요구 사항에 대한 요약 버전이 있습니다.

--filter="+ */""디렉토리에 모든 것을 포함한다"는 뜻

--filter="-! *blah*"파일 이름에 어쩌구 저쩌구(blah)가 포함되지 않은 모든 항목을 제외합니다"를 의미합니다.

답변2

이러한 파일을 복사해야 하는 경우 cp는 다음을 수행합니다.

cd dirA
find . -iname "*blah*" | xargs -If cp --parents f dirB

옵션 --parents보존 하위 디렉터리 - 대상에 대한 전체 디렉터리 경로를 생성합니다.

답변3

이것은 나에게 효과적입니다.

rsync -ave 'ssh -p 22' --filter="+ */" --exclude="*_blah.blah" [email protected]:/source/directory/ /destination/directory/

스위치는 전송 프로토콜을 -e정의 rsync하며 포트는 입니다 -p 22. 또한 /프로그램이 디렉토리를 다루고 있음을 알리려면 후행 슬래시가 중요합니다.

근무일에 추가 시간을 내주신 @pdo에게 감사드립니다!

관련 정보