빈 디렉토리없이 디렉토리 트리를 복사 하시겠습니까? = directory # lower letters

나는 다음과 같은 나무를 가지고있다

# upper letters = directory
# lower letters = files
A
|-- B
|-- C
    |-- D
    |-- e <= file
|-- F
    |-- G

빈 트리를 재귀 적으로 무시하면서이 트리를 다른 대상으로 복사해야합니다. 그래서 목적지는 다음과 같이 보입니다.

C
|-- e

유닉스, rsync 등으로 어떻게 이것을 할 것입니까?



답변

물론 몇 분 후 나는 쉬운 방법을 발견했다. rsync--prune-empty-dirs옵션을 선택합니다.


답변

이 문제에 대한 다양한 솔루션이 있습니다 ( 이 웹 페이지 에서 가져옴 ).

이 옵션은 mkdir 명령을 find 명령과 함께 사용합니다. 이 방법을 사용하려면 명령을 실행하는 동안 소스 폴더 안에 있어야합니다.

bash$ cd /path/to/source && find . -type d -exec mkdir -p /path/to/dest/{} ;

find와 cpio 사용

bash$ find /path/to/source -type d | cpio -pd /path/to/dest/

Rsync 사용

bash$ rsync -a --include '*/' --exclude '*' /path/to/source /path/to/dest

또는

bash$ rysnc -a -f"+ */" -f"- *" /path/to/source /path/to/dest


답변