复制没有空目录的目录树?

我有以下的树

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

我需要复制这棵树到另一个目的地,recursion地忽略所有的空目录。 所以目的地最终看起来像:

 C |-- e 

你如何使用unixrsync等来做到这一点?

当然分钟后我发现一个简单的方法。 rsync有一个--prune-empty-dirs选项。

有这个问题的各种解决scheme(采取从这个网页 ):

该选项使用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